【发布时间】:2016-09-26 14:39:20
【问题描述】:
我正在尝试了解 IdentityServer3 和与之相关的不同术语,以保护我的 Web API。有人可以用一些很好的例子来解释 Scope 在 IdentityServer 中的意义吗?
我找到了this 链接,但想法不清楚。
提前致谢!
【问题讨论】:
标签: oauth-2.0
我正在尝试了解 IdentityServer3 和与之相关的不同术语,以保护我的 Web API。有人可以用一些很好的例子来解释 Scope 在 IdentityServer 中的意义吗?
我找到了this 链接,但想法不清楚。
提前致谢!
【问题讨论】:
标签: oauth-2.0
可以肯定地说Scope 是一种访问特定资源集恕我直言的角色。 IdentityServer 有两种范围类型,ScopeType 枚举被定义并描述为“OpenID Connect 范围类型。”
/get/calendar/months web api 并获取资源。Scope 将在带有 访问令牌 的 HTTP 请求正在进行时包含在 Claim 中,并将在 访问令牌 的验证阶段进一步验证>.
当然应该在运行 IdentityServer 之前添加客户端,并且应该在AllowedScopes 中指定适当的范围; IdentityServer 中Client 类的成员。
【讨论】:
了解 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(身份范围,如电子邮件、给定名称等)或 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
【讨论】: