[英]Troubleshooting ASP.NET Core Role-based Authorization with Windows Authentication
[英]Role-based basic authentication failing
我已經在我的 Web API 站點中實現了基本授權。
根據網上的一篇文章,我有以下class。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class BasicAuthorizationAttribute : AuthorizeAttribute
{
public BasicAuthorizationAttribute()
{
Policy = "BasicAuthentication";
}
}
然后在我的自定義AuthenticationHandler<>
中,我以這種方式創建了AuthenticatedTicket
。
var authenticatedUser = new AuthenticatedUser("BasicAuthentication", true, "roundthecode");
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(authenticatedUser));
var ticket = new AuthenticationTicket(claimsPrincipal, Scheme.Name);
但現在我不想以這種方式創建政策。 我想改為定義這樣的角色。
List<Claim> claims = new();
claims.Add(new Claim(ClaimTypes.Name, username));
claims.AddRange(login.GetRoles().Select(r => new Claim(ClaimTypes.Role, r)));
ClaimsIdentity claimsIdentity = new(claims);
ClaimsPrincipal claimsPrincipal = new(claimsIdentity);
var ticket = new AuthenticationTicket(claimsPrincipal, Scheme.Name);
但現在我的 Web API 返回 403(禁止)。
這是因為我的BasicAuthorizationAttribute
class 設置了策略嗎?
我不再使用策略。 我想要指定角色的選項。 但是如果沒有指定角色,那么我希望它被接受,只要它通過了基本身份驗證。
例如,有兩個用戶登錄。第一個用戶具有角色“a”,第二個用戶沒有角色。 您可以修改您的代碼,以便為兩個用戶添加一個名為“loggedIn”的角色,無論他們是否有任何其他角色。 然后第一個用戶具有角色“a,loggedIn”,第二個用戶僅具有角色“loggedIn”。 現在至少使用“loggedIn”角色保護端點,即使它以前沒有受到保護。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.