【问题标题】:What is scope in IdentityServerIdentityServer 的作用域是什么
【发布时间】:2016-09-26 14:39:20
【问题描述】:

我正在尝试了解 IdentityServer3 和与之相关的不同术语,以保护我的 Web API。有人可以用一些很好的例子来解释 Scope 在 IdentityServer 中的意义吗?

我找到了this 链接,但想法不清楚。

提前致谢!

【问题讨论】:

标签: oauth-2.0


【解决方案1】:

范围

可以肯定地说Scope 是一种访问特定资源集恕我直言的角色。 IdentityServer 有两种范围类型,ScopeType 枚举被定义并描述为“OpenID Connect 范围类型。”

  • 身份范围:表示身份数据(例如个人资料或电子邮件)
  • 例如,如果您有配置文件身份范围,则具有此范围的客户端可以从身份提供者(例如 IdentityServer)获取配置文件数据
  • Resource Scope:表示资源(例如 Web api)
  • 例如,如果客户端有日历资源范围,那么他们可以调用/get/calendar/months web api 并获取资源。

Scope 将在带有 访问令牌 的 HTTP 请求正在进行时包含在 Claim 中,并将在 访问令牌 的验证阶段进一步验证>.

当然应该在运行 IdentityServer 之前添加客户端,并且应该在AllowedScopes 中指定适当的范围; IdentityServer 中Client 类的成员。

【讨论】:

    【解决方案2】:

    了解 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

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多