Identity Server的范围

时间:2016-04-04 12:33:31

标签: asp.net-mvc identityserver3

我对Identity Server 3和OAuth2范围有疑问。

一般来说,我对范围的理解是对#34; group"资源,以及范围内定义的那些资源所需的索赔。

现在我想使用oauth2客户端凭据和OIDC混合流。 因为一个客户端只能在身份服务器中提供一个流,所以我必须为这些流创建不同的客户端,这很好。

对于Client Credentials流,范围必须具有" Resource"类型,因为其中没有声明。对于混合流程,他们将拥有"身份"与子索赔等。

我是否还必须为每个流创建不同的范围?我想知道因为我从来没有看过像#34; myservice.client"," myservice.hybrid"或某事像那样。我的计划是为两个流创建相同的范围,但由于它们包含不同的信息,因此可能不是"对"。

我不想要的是为不同的流程提供不同的API方法。如果有用户,则客户端应通过混合流与用户上下文连接,否则通过客户端凭据进行身份验证。

在我的控制器中,应该只有授权["某些范围"]。 是否可以将AuthorizationPolicies与" OR",使用一个名称和多个范围?

编辑:对于最后一个问题,我发现:

  

您还可以指定逗号分隔值列表作为其中一部分   索赔要求,例如

     

options.AddPolicy(" MustBeGroot",policy =>   policy.RequireClaim(" Permissions"," Read,Update"));会过去的   授权如果权限声明具有值或Read或   更新

但正确的链接是:http://docs.asp.net/en/latest/security/authorization/claims.html。 我们必须提供一个列表,而不是逗号分隔的字符串。

1 个答案:

答案 0 :(得分:1)

有一些误解 -

  • 您可以将Hybrid和Client Credentials Flow同时用于单个客户端 - 使用客户端类上的AllowClientCredentialsOnly设置。

https://identityserver.github.io/Documentation/docsv2/configuration/clients.html

  • 身份和资源范围都可以声明。身份范围定义身份令牌的内容,资源范围定义访问令牌的内容。对于用户身份验证,您使用身份令牌 - 对于API访问,您使用访问令牌。

  • 您不需要为不同的流创建不同的范围。

https://identityserver.github.io/Documentation/docsv2/configuration/scopesAndClaims.html

  • 最后一部分是asp.net核心授权问题,应该是单独的。