[英]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.