我有一个包含2个区域的WebAPI - 用户和管理员。 2个站点,用户和管理员,使用它,他们有自己的客户端ID。
public static readonly Scope AdminScope = new Scope
{
Name = "adm_api",
Type = ScopeType.Resource,
Claims = new List<ScopeClaim>
{
new ScopeClaim(Constants.ClaimTypes.Role),
new ScopeClaim(VitClaimTypes.IsAdmin)
},
};
public static readonly Scope UserScope = new Scope
{
Name = "user_api",
Type = ScopeType.Resource,
Claims = new List<ScopeClaim>
{
new ScopeClaim(Constants.ClaimTypes.Role),
new ScopeClaim(Constants.ClaimTypes.Name),
}
};
客户端:
new Client
{
ClientName = "User area client",
ClientId = "user_client",
Enabled = true,
AllowedScopes = new List<string>
{
"user_api", "offline_access"
}
},
new Client
{
ClientName = "Admin area client",
ClientId = "adm_client",
Enabled = true,
AllowedScopes = new List<string>
{
"user_api", "adm_api"
}
},
现在我想拒绝为请求&#39; adm_api&#39;的用户登录范围但没有IsAdmin声明。我怎么做?我知道我可以为API添加自定义Authorize属性,我会这样做。但是,在登录时立即拒绝访问比等待第一次API访问更加用户友好。
答案 0 :(得分:0)
我认为管理员应负责检查已发布的声明,并在请求api资源之前通知用户访问不足。身份服务拒绝登录是不正确的,毕竟身份验证没有任何问题。这听起来更像授权。