ApiResource和ApiScope与IdentityResource有什么区别?

24

我已经阅读了IdentityServer4文档,但我无法理解这三个概念之间的确切区别。(ApiResource vs ApiScope vs IdentityResource)

1- 正如文档中所述,API Scope建模了OAuth Scope,而API Resource则建模了API资源。那么OAuth Scope和API资源之间有什么区别呢?

2- 同样地,在文档的这一节中,我理解在Identity Server中客户端定义的AllowsScope中必须添加IdentityResources。那么Identity resource的确切用途是什么?

3- 如果我将一些IdentityResources添加到客户端的AllowsScopes,那么我如何在客户端中看到这些资源呢?

我是Identity Server的初学者,这意味着我的问题可能很基础。但请回答这些问题,我已经搜索过很多地方,但没有一个地方完全解释了这些概念。例如,这里是Identity resource的定义!

1个回答

42

IdentityResources下列出的范围是将包含在ID令牌中的范围。

ApiScopes是您作为客户端请求的内容,而作为用户,您会同意这些请求。可选地,一个或多个ApiResources可以与ApiScope相关联。

ApiScopeApiResources控制在访问令牌中包含什么。ApiResources指出访问令牌中aud声明所包含的内容。

总之,客户端发送的范围是IdentityResources和ApiScopes的列表。

输入图像说明

为了补充这个答案,我写了一篇博客文章,更详细地介绍了这个主题: IdentityServer – IdentityResource vs. ApiResource vs. ApiScope


3
根据我在这里阅读的文档,与你所说的相反,ApiResource 可以指出一个或多个 ApiScope。我说得对吗? - Happy Developer
关于电子邮件,您是否还将电子邮件添加到客户端允许范围列表中? - Tore Nestenius
2
我澄清了文本和图像,逻辑上,一个 ApiScopes 包括零个或多个 ApiResources。但在代码中,一个 ApiResource 选择它属于哪些 ApiScopes。 - Tore Nestenius
1
我修复了箭头错误,并添加了作用域,满意吗? - Tore Nestenius
2
范围是客户端请求的内容,然后将范围映射到IdentityResources和ApiScopes。换句话说,范围是IdentityResources和ApiScopes列表。 - Tore Nestenius
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接