身份服务器流
IdentityServer Flows
IdentityServer 支持 Flows enum and set for clients. There's also samples for each type of flow and many references to them in the docs but I could not find a simple definition list of what flows are in the documentation 中定义的不同 OpenId Connect 流程,好像它们太明显而无法用文字解释。但我想他们不是。您能否详细说明它们的区别,也许我们可以将其添加到文档中?
那么什么是:隐式流,资源所有者密码凭证流,授权码流程、客户端凭据流程、自定义授权流程和混合流程?还有哪些是 OAuth 流程,哪些是 OpenID Connect 流程?
谢谢!
查看规格 - 已经全部写下来了:
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/
我遇到了同样的问题,目前工作仍在进行中。当我完成文档时,我可能会 post 在这里。暂时:请查稿:
Enrich IdentityServer Documentation with OIDC and OAuth2 Flows section #73
来自 leastPrivilage 的第一个 link: 和 Aharon Paretzki's OAuth 2 Simplified
流量决定ID令牌(即授权码)和访问方式token(即'the token')返回给客户端:
授权代码流程:OAuth 2.0流程,其中
- 授权端点返回授权码
- 并且所有令牌(作为第二阶段,以换取授权代码)都从令牌端点返回
- 用于基于服务器的调用 (APIs),可以维护其客户端机密的机密性。允许更强的安全性,只要没有人可以访问 "client secret".
隐式流程:OAuth 2.0 流程,其中
- 所有令牌直接从授权端点返回
- 并且既不使用令牌端点也不使用授权码。
- 用于移动和基于 Web 的应用程序,无法维护客户端机密的机密性,因此需要拥有由身份验证服务器本身颁发的令牌。这不太安全,建议将服务器设置为拒绝 隐式流 调用 API 使用,并仅允许基于浏览器和基于移动的应用程序.
混合流程:OAuth 2.0 流程,其中
- 从授权端点返回授权代码,
- 一些令牌直接从授权端点返回,其他令牌从令牌端点返回(作为第二阶段,以换取授权代码)。
- 在需要两种流程的地方使用。
OAuth2 are just several ways for a client to receive an access token
from an identity provider server; the IdentityServer
in this case. Understanding the flows won't be easy unless you fully comprehend the entities specified in the flow diagrams such as Resource Owner
, User Agent
, and Resource Server
. There're some brief explanations on these entities ( roles, preciously ) in here 中定义的流程。
授权代码流:在发出access token
.
之前发出authorization code
- 客户请求
authorization code.
- IdentityServer 验证客户端并请求资源所有者授权发布
authorization code
.
- 客户端然后请求
access token
给定的 authorization code
- 授权服务器直接向客户端发出
access token
。
隐式代码流:即使没有提供authorization code
也会发出access token
。
- 客户直接请求
access token
。
- IdentityServer 跳过对客户端的验证(在某些情况下,它部分执行)但仍要求资源所有者授予授权以发出
access token
- 此流程从不发出
authorization code
。
隐式流程 被认为是使用 javascript
等脚本语言的客户端的理想流程,因为客户端不必请求 authorization code
和 access token
分开,依次减少了客户端的一次网络往返。
客户端凭据流 : 未经资源所有者许可发出access token
。
- 客户端直接请求访问令牌。
- IdentityServer 验证客户端并立即发出
access token
。
当客户端也是资源所有者时,这是理想的选择,因此它不需要任何授权权限一直到 access token
。
资源所有者流程:如果客户端拥有资源所有者的凭据(例如 ID / 密码)
,则发出 access token
- 客户直接请求
access token
。
- IdentityServer 验证客户端并检查资源所有者的身份。
- 如果有效,客户端立即获得
access token
。
此流程非常适合您认为与他们共享 ID 和密码绝对安全的客户。
混合流(OIDC 流) : 发出一个 authorization code
和一个 access token
.
这是 Authorization code flow
和 Implicit code flow
的组合。这就是为什么它被称为 Hybrid
.
自定义流程
这实际上是一个可定制的流程。除了 OAuth2
.
中的所有协议规范之外,当您在业务中需要特定的身份验证/验证过程时,可以使用它。
IdentityServer 很清楚这种情况,它通过设计支持可扩展性。工厂模式、装饰器模式和 IoC / DI 将使您更容易在 IdentityServer.
上实现其他功能
IdentityServer 支持 Flows enum and set for clients. There's also samples for each type of flow and many references to them in the docs but I could not find a simple definition list of what flows are in the documentation 中定义的不同 OpenId Connect 流程,好像它们太明显而无法用文字解释。但我想他们不是。您能否详细说明它们的区别,也许我们可以将其添加到文档中?
那么什么是:隐式流,资源所有者密码凭证流,授权码流程、客户端凭据流程、自定义授权流程和混合流程?还有哪些是 OAuth 流程,哪些是 OpenID Connect 流程?
谢谢!
查看规格 - 已经全部写下来了:
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/
我遇到了同样的问题,目前工作仍在进行中。当我完成文档时,我可能会 post 在这里。暂时:请查稿:
Enrich IdentityServer Documentation with OIDC and OAuth2 Flows section #73
来自 leastPrivilage 的第一个 link: 和 Aharon Paretzki's OAuth 2 Simplified
流量决定ID令牌(即授权码)和访问方式token(即'the token')返回给客户端:
授权代码流程:OAuth 2.0流程,其中
- 授权端点返回授权码
- 并且所有令牌(作为第二阶段,以换取授权代码)都从令牌端点返回
- 用于基于服务器的调用 (APIs),可以维护其客户端机密的机密性。允许更强的安全性,只要没有人可以访问 "client secret".
隐式流程:OAuth 2.0 流程,其中
- 所有令牌直接从授权端点返回
- 并且既不使用令牌端点也不使用授权码。
- 用于移动和基于 Web 的应用程序,无法维护客户端机密的机密性,因此需要拥有由身份验证服务器本身颁发的令牌。这不太安全,建议将服务器设置为拒绝 隐式流 调用 API 使用,并仅允许基于浏览器和基于移动的应用程序.
混合流程:OAuth 2.0 流程,其中
- 从授权端点返回授权代码,
- 一些令牌直接从授权端点返回,其他令牌从令牌端点返回(作为第二阶段,以换取授权代码)。
- 在需要两种流程的地方使用。
OAuth2 are just several ways for a client to receive an access token
from an identity provider server; the IdentityServer
in this case. Understanding the flows won't be easy unless you fully comprehend the entities specified in the flow diagrams such as Resource Owner
, User Agent
, and Resource Server
. There're some brief explanations on these entities ( roles, preciously ) in here 中定义的流程。
授权代码流:在发出access token
.
authorization code
- 客户请求
authorization code.
- IdentityServer 验证客户端并请求资源所有者授权发布
authorization code
. - 客户端然后请求
access token
给定的authorization code
- 授权服务器直接向客户端发出
access token
。
隐式代码流:即使没有提供authorization code
也会发出access token
。
- 客户直接请求
access token
。 - IdentityServer 跳过对客户端的验证(在某些情况下,它部分执行)但仍要求资源所有者授予授权以发出
access token
- 此流程从不发出
authorization code
。
隐式流程 被认为是使用 javascript
等脚本语言的客户端的理想流程,因为客户端不必请求 authorization code
和 access token
分开,依次减少了客户端的一次网络往返。
客户端凭据流 : 未经资源所有者许可发出access token
。
- 客户端直接请求访问令牌。
- IdentityServer 验证客户端并立即发出
access token
。
当客户端也是资源所有者时,这是理想的选择,因此它不需要任何授权权限一直到 access token
。
资源所有者流程:如果客户端拥有资源所有者的凭据(例如 ID / 密码)
,则发出access token
- 客户直接请求
access token
。 - IdentityServer 验证客户端并检查资源所有者的身份。
- 如果有效,客户端立即获得
access token
。
此流程非常适合您认为与他们共享 ID 和密码绝对安全的客户。
混合流(OIDC 流) : 发出一个 authorization code
和一个 access token
.
这是 Authorization code flow
和 Implicit code flow
的组合。这就是为什么它被称为 Hybrid
.
自定义流程
这实际上是一个可定制的流程。除了 OAuth2
.
IdentityServer 很清楚这种情况,它通过设计支持可扩展性。工厂模式、装饰器模式和 IoC / DI 将使您更容易在 IdentityServer.
上实现其他功能