IdentityServer 支持在Flows枚举中定义并为客户端设置的不同 OpenId Connect 流。每种类型的流也有示例,并且在文档中对它们有很多引用,但我找不到文档中的流的简单定义列表,好像它们太明显而无法用语言解释。但我想他们不是。您能否详细说明这些差异,也许我们可以将其添加到文档中?
那么什么是:隐式流程、资源所有者密码凭证流程、授权代码流程、客户端凭证流程、自定义授权流程和混合流程?还有哪些是 OAuth 流,哪些是 OpenID Connect 流?
谢谢!
IdentityServer 支持在Flows枚举中定义并为客户端设置的不同 OpenId Connect 流。每种类型的流也有示例,并且在文档中对它们有很多引用,但我找不到文档中的流的简单定义列表,好像它们太明显而无法用语言解释。但我想他们不是。您能否详细说明这些差异,也许我们可以将其添加到文档中?
那么什么是:隐式流程、资源所有者密码凭证流程、授权代码流程、客户端凭证流程、自定义授权流程和混合流程?还有哪些是 OAuth 流,哪些是 OpenID Connect 流?
谢谢!
我遇到了同样的问题,目前工作仍在进行中。当我完成文档时,我可能会在这里发布。暂时:请检查草稿:
使用 OIDC 和 OAuth2 流程丰富 IdentityServer 文档部分 #73
更新: OIDC 和 OAuth2 流程
来自 leastPrivilage 的第一个链接:和Aharon Paretzki 的 OAuth 2 Simplified
流程决定如何将ID 令牌(即授权码)和访问令牌(即“令牌”)返回给客户端:
授权码流程:OAuth 2.0 流程,其中
隐式流:OAuth 2.0 流,其中
混合流:OAuth 2.0 流,其中
查看规格 - 已经全部写下来:
http://openid.net/specs/openid-connect-core-1_0.html 和 https://www.rfc-editor.org/rfc/rfc6749
此外,我最近写了一个总结,将它分解为不同的应用程序类型:
http://leastprivilege.com/2016/01/17/which-openid-connectoauth-2-o-flow-is-the-right-one/
OAuth2中定义的流程只是客户端access token
从身份提供者服务器接收信息的几种方式;在IdentityServer
这种情况下。除非您完全理解流程图中指定的实体,例如Resource Owner
、User Agent
和,否则理解流程并不容易Resource Server
。这里有一些关于这些实体(角色,珍贵)的简要解释。
授权码流程:authorization code
在发布之前发布access token
。
authorization code.
authorization code
.access token
给定的authorization code
access token
直接向客户端发出一个。隐式代码流:发出一个access token
未authorization code
提供的偶数。
access token
直接请求。access token
authorization code
.隐式流被认为是使用脚本语言的客户端的理想流,javascript
因为客户端不必单独请求 anauthorization code
和 an access token
,从而减少了客户端的一次网络往返。
客户端凭证流:在access token
没有资源所有者许可的情况下发出。
access token
。当客户端也是资源所有者时这是理想的,因此它不需要任何授权权限一直到access token
.
资源所有者流程:access token
如果客户端拥有资源所有者的凭据(例如 ID / 密码) ,则发出
access token
直接请求。access token
立即获得。此流程非常适合您认为与他们共享 ID 和密码绝对安全的客户。
混合流(OIDC 流):发出一个authorization code
和一个access token
。
这是Authorization code flow
和的组合Implicit code flow
。这就是它被称为 的原因Hybrid
。
自定义流程
这实际上是一个可定制的流程。除了OAuth2
.
IdentityServer很清楚这种情况,它通过设计支持可扩展性。工厂模式、装饰器模式和 IoC / DI 将使您更容易在IdentityServer上实现附加功能。