我正在尝试了解IdentityServer3以及与其相关的不同术语,以保护我的Web API。有人可以通过一些很好的例子来解释IdentityServer中 Scope 的重要性。
我找到this链接,但想法不明确。
提前致谢!
答案 0 :(得分:7)
了解oAuth2的更好资源是IETF,而关于OpenID Connect的资源是openid.net。
IdentityServer是OAuth2和OpenID的一个实现,因此它的文档不会涵盖与OAuth2和OpenID相关的基础知识。
首先要了解范围,您应该清楚了解客户。
客户端:为OpenID Connect或OAuth2客户端(不是您的客户端应用程序)建模,它应该有一个明确的流程,例如您定义了一个使用隐式流的客户端。
流程是您应该遵循的方式,以获取示例access_token和id_token所需的数据。
所有流程都可以用于任何情况,但每种情况都有推荐的流程。
例如,到目前为止,建议您对本机和javascript客户端使用隐式流。尽管如此,最近这已经改为使用PKCE的授权码。请参阅此change to IETF/OpenID recommendations
上的Identity Server博客文章范围:建模OpenID Connect(标识范围,如电子邮件,given_name等)或OAuth2(资源范围,如您希望保护其数据的WebApi)范围。
您可以将范围视为客户的意图,例如:客户要求您使用资源所有者授予我对openid范围的访问权限> given_name,email& prefered_username和您的OAuth2范围>的WebAPI。
为了充分理解:
1- Pluralsight - Building and Securing a RESTful API for Multiple Clients in ASP.NET
2- Pluralsight - OAuth2 and OpenID Connect Strategies for Angular and ASP.NET
答案 1 :(得分:4)
可以肯定地说Scope
是一种访问IMHO特定资源集的角色。 IdentityServer有两种范围类型,ScopeType
枚举已定义并描述为“ OpenID Connect范围类型”。
/get/calendar/months
Web api并获取资源。 Scope
将包含在Claim
中,并将在验证阶段进一步验证访问权限令牌。
当然应该在运行IdentityServer之前添加客户端,并且应该在AllowedScopes
中指定适当的范围; IdentityServer中Client
类的成员。