我遇到了同样的问题,目前工作仍在进行中。当我完成文档时,我可能会在这里发布它。暂时请检查草案:
使用OIDC和OAuth2流程部分丰富IdentityServer文档 #73
更新: OIDC和OAuth2流程
来自leastPrivilage的第一个链接: 和Aharon Paretzki的OAuth 2 Simplified
流程决定了ID令牌(即授权代码)和访问令牌(即“令牌”)如何返回给客户端:
Authorization Code Flow: OAuth 2.0流程,其中
Implicit Flow: OAuth 2.0流程,其中
Hybrid Flow: 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中定义的流程是客户端从身份提供者服务器(在此处为IdentityServer
)接收access token
的几种方式;要理解这些流程,您必须充分了解流程图中指定的实体,例如Resource Owner
、User Agent
和Resource Server
。这些实体的简要说明(角色)在这里。
授权码流程:在发放访问令牌
之前,会先发放一个授权码
。
授权码
。授权码
。授权码
请求访问令牌
。访问令牌
。隐式代码流:即使没有提供授权码
,也会发出访问令牌
。
访问令牌
。访问令牌
。授权码
。隐式流被认为是使用脚本语言(如javascript
)的客户端的理想流程,因为客户端无需单独请求授权码
和访问令牌
,从而减少了客户端的一次网络往返。
客户端凭证流程:无需资源所有者的许可即可发出访问令牌
。
访问令牌
。当客户端也是资源所有者时,这是理想的选择,因此它不需要任何授权权限一直到访问令牌
。
访问令牌
。
访问令牌
。访问令牌
。此流程适用于您认为与其共享ID和密码是绝对安全的客户端。
自定义流程
这是一个可定制的流程。当您需要在OAuth2
的所有协议规范之外,在业务中使用特定的身份验证/验证过程时,可以使用它。
IdentityServer非常了解这种情况,并通过设计支持可扩展性。工厂模式、装饰器模式和IoC / DI将使您更容易在IdentityServer上实现其他功能。