Ole*_*leh 2 c# .net-core identityserver4
我正在使用IdentityServer4保护我的.net核心应用程序。我想使用基于策略的授权
这是我执行的一项政策示例
options.AddPolicy("api.order.write", builder =>
builder.RequireScope(
"app.write", "app.read", "app.order.read"));
Run Code Online (Sandbox Code Playgroud)
我想为不同的角色分配不同的作用域。例如,具有角色查看器的用户将只有app.read范围。因此,在登录请求期间,Web客户端会将请求发送给具有我们在应用程序中所有作用域列表的身份,但是它应该处理并返回具有基于角色的作用域的令牌。我认为我可以在其中实现自定义IProfileService并检查用户角色,并在范围内添加声明,但是也许已经有解决方案。你有什么想法 ?
UPD:我创建了自定义IProfileService,正在检查用户角色,然后设置像这样的范围的特定列表
//removing existing scopes if such exist already
context.IssuedClaims = context.IssuedClaims.Where(x => x.Type != "scope").ToList();
foreach (var scope in viewerScopes)
{
context.IssuedClaims.Add(new Claim("scope", scope));
}
Run Code Online (Sandbox Code Playgroud)
但我仍然收到所有作用域(不是每个角色),即Web客户端在登录请求期间发送的作用域列表。
您在这里混合了客户端授权(即OAuth / OIDC术语中的范围)和用户授权。
用户授权检查应在API /资源本身内部进行(并在进行基本范围检查之后),而不是在颁发令牌时在IDS4服务中进行。
https://leastprivilege.com/2016/12/16/identity-vs-permissions/
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |