IdentityServer的范围是什么

时间:2016-05-28 09:24:04

标签: oauth-2.0

我正在尝试了解IdentityServer3以及与其相关的不同术语,以保护我的Web API。有人可以通过一些很好的例子来解释IdentityServer中 Scope 的重要性。

我找到this链接,但想法不明确。

提前致谢!

2 个答案:

答案 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范围类型”。

  • 身份范围:代表身份数据(例如个人资料或电子邮件)
  • 例如,如果您具有配置文件身份范围,则具有该范围的客户端可以从身份提供商(例如IdentityServer)获取配置文件数据
  • 资源范围:表示资源(例如网络api)
  • 例如,如果客户端具有日历资源范围,则他们可以调用/get/calendar/months Web api并获取资源。
当带有访问令牌的HTTP请求正在进行时,

Scope将包含在Claim中,并将在验证阶段进一步验证访问权限令牌

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