簡體   English   中英

在構建需要聲明的策略時,我們是否需要包含 RequireAuthenticatedUser?

[英]Do we need to include RequireAuthenticatedUser when building a policy that requires claims?

當您在 ASP.NET Core 中創建自定義策略時,如下所示:

services.AddAuthorization(options =>
    {
        options.AddPolicy("MyCustomPolicy",
            policyBuilder => policyBuilder.RequireClaim("SomeClaim"));
    });

如上定義與按以下方式定義有什么區別:

services.AddAuthorization(options =>
    {
        options.AddPolicy("MyCustomPolicy",
            policyBuilder => policyBuilder.RequireAuthenticatedUser()
                             .RequireClaim("SomeClaim"));
    });

我的意思是,有沒有可能在沒有經過身份驗證的情況下提出索賠? 如果是 - 它是如何工作的? 一個證明這種行為的例子會很棒!

編輯: 是調用RequireClaim背后的要求的源代碼, RequireAuthenticatedUser的要求。

從有關AuthorizationPolicyBuilder.RequireAuthenticatedUser 方法的文檔中,我們可以找到:

Adds a DenyAnonymousAuthorizationRequirement to the current instance

下面的示例可以幫助了解它是如何工作的。

添加自定義聲明

app.UseAuthentication();

app.Use(async (context, next) =>
{
    //add a claim to this claims identity
    context.User.Identities.FirstOrDefault().AddClaim(new Claim("SomeClaim", "testval"));

    await next.Invoke();
});

app.UseAuthorization();

如果不調用.RequireAuthenticatedUser方法

services.AddAuthorization(options =>
{
    options.AddPolicy("MyCustomPolicy",
        policyBuilder => policyBuilder.RequireClaim("SomeClaim"));

});

我們可以發現匿名用戶也可以通過聲明檢查並訪問資源,如下所示。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM