Jac*_*ong 2 scope identityserver4
我是 Identity Server 4 的新手。ApiScope 的概念不清楚,你能解释得更详细吗?以及我们如何在实际中应用它。
示例:Web API 将有以下模块,我想限制对模块的访问,我可以基于它吗?如果可能,我们如何在系统中配置它
Scopes =
{
new Scope()
{
Name = "accountmanagement",
DisplayName = "Account management api",
},
new Scope()
{
Name = "stockmanagement",
DisplayName = "Account management api",
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
范围是一个抽象概念,您可以使用您认为合适的方式来细分(或不适合)您的 API 资源。例如,您可能有:
在 IdentityServer 中,您可以AllowedScopes在Client对象上使用指定您的客户端有权访问的范围。因此,您可能有一个只能使用“MyApiUser”范围的客户端和一个可以同时使用“MyApiUser”范围和“MyApiAdmin”范围的不同客户端。
范围不是的功能user,只有client用户正在使用。
如何分解资源完全取决于您。
在您的API,你需要定义AllowedScopes你的范围内UseIdentityServerAuthentication,让你的API知道的作用域将访问令牌内接受。如果您有一个接受多个范围的 API,并且您想根据访问令牌的范围来控制对端点的访问(因为您的 API 支持多个客户端,每个客户端具有不同的范围),那么您可以定义Policies基于Claims(范围只是作为索赔包裹)。
一个很好的阅读可以在这里找到:https : //leastprivilege.com/2015/12/28/validating-scopes-in-asp-net-4-and-5/