IdentityServer流程

ora*_*rad 54 openid oauth-2.0 thinktecture-ident-server openid-connect identityserver3

IdentityServer支持在Flows枚举中定义并为客户端设置的不同OpenId Connect流.还有每种类型的流量,并在文档给他们很多的参考样本,但我找不到什么流是一个简单的定义列表的文件,如果他们是太明显言传.但我想他们不是.您能告诉我们这些差异的更多信息,也许我们可以将其添加到文档中吗?

那么什么是:隐式流,资源所有者密码凭证流,授权代码流,客户端凭证流,自定义授权流和混合流?还有哪些是OAuth流,哪些是OpenID Connect流?

谢谢!

Jaw*_*ikh 39

我遇到了同样的问题,目前工作仍在进行中.当我完成文档时,我可能会在这里发布.暂时:请检查草稿:

使用OIDC和OAuth2流程部分#73丰富IdentityServer文档

更新: OIDC和OAuth2流程

  • 另请参阅DigitalOcean的[OAuth 2.0简介](https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2). (5认同)

pas*_*ute 20

来自leastPrivilage的第一个链接:Aharon Paretzki的OAuth 2 Simplified

流决定ID令牌(即授权代码)和访问令牌(即"令牌")如何返回给客户端:

授权码流程:OAuth 2.0流程在其中

  • 授权端点返回授权码
  • 并且从令牌端点返回所有令牌(作为第二阶段,以换取授权码)
  • 用于基于服务器的调用(API),可以保持其客户端机密的机密性.只要没有人可以访问"客户端密钥",就可以提高安全性.

隐式流程:OAuth 2.0流程

  • 所有令牌都直接从授权端点返回
  • 并且既不使用令牌端点也不使用授权码.
  • 用于移动和基于Web的应用程序,无法保持客户端机密的机密性,因此需要具有由auth服务器本身颁发的令牌.这样安全性较低,建议将服务器设置为拒绝对API使用的隐式流调用,并仅允许基于浏览器和基于移动的应用程序.

混合流程:OAuth 2.0流程

  • 授权端点返回授权码,
  • 一些令牌直接从授权端点返回,其他令牌从令牌端点返回(作为第二阶段,以换取授权码).
  • 用于需要两个流量的地方.


lea*_*ege 10

看看规格 - 已经全部记下来了:

http://openid.net/specs/openid-connect-core-1_0.htmlhttp://tools.ietf.org/html/rfc6749

此外,我最近写了一个摘要,针对不同的应用程序类型细分了它:

http://leastprivilege.com/2016/01/17/which-openid-connectoauth-2-o-flow-is-the-right-one/

  • 随意写下这一切,让我们知道,以便我们可以链接到它.它不是产品,而是OSS.呻吟很容易.自己改进. (4认同)
  • 我还发现这是Identity Server的最大问题,因为有关该产品的基本信息有限.实施框架一个月左右,非常详细的文档将证明是有用的,但学习曲线并不是垂直的. (3认同)
  • 你是对的.我不应该呻吟.这是一个很好的资源,希望我能做出贡献. (3认同)
  • 我知道,但是我正在寻找简短的描述。我发现您博客中的[this](http://leastprivilege.com/2014/10/10/openid-connect-hybrid-flow-and-identityserver-v3/)描述非常有用。 (2认同)

hin*_*531 6

OAuth2中定义的流只是客户端access token从身份提供者服务器接收身份验证的几种方式。在IdentityServer这种情况下。除非您完全理解流程图中指定的实体(如,和)Resource Owner,否则要了解流程并不容易。还有就是对这些实体(角色,珍贵)在一些简单的解释在这里User AgentResource Server


授权代码流authorization code在发行证书之前发出优先证书access token

  • 客户要求 authorization code.
  • IdentityServer验证客户端,并要求资源所有者授予发布证书的授权authorization code
  • 然后,客户端请求access token给定的authorization code
  • 授权服务器access token直接向客户端发出。

隐式代码流:发出一个access token没有authorization code提供的偶数。

  • 客户access token直接请求一个。
  • IdentityServer跳过对客户端的验证(在某些情况下,部分验证),但仍要求资源所有者授予授权以发布证书。access token
  • 此流程永远不会发出authorization code

隐式流被认为是使用脚本语言的客户端的理想流,例如,javascript因为客户端不必分别请求authorization codeaccess token,从而减少了客户端的一次网络往返。


客户端凭证流access token未经资源所有者许可,发出。

  • 客户端直接请求访问令牌。
  • IdentityServer验证客户端并立即发出access token

当客户端也是资源所有者时,这是理想的选择,因此它不需要任何授权权限,直到access token


资源所有者流access token如果客户端具有资源所有者的凭据(例如,Id / Password),则发出一个

  • 客户access token直接请求一个。
  • IdentityServer验证客户端并检查资源所有者的身份。
  • 如果有效,客户将access token立即获得。

对于您认为与他们共享ID和密码绝对安全的客户,此流程非常理想。


混合流(OIDC流):发出authorization codeaccess token

这是一个组合Authorization code flowImplicit code flow。这就是为什么将其称为Hybrid


自定义流程

这实际上是可定制的流程。当您在企业中需要特定的身份验证/验证过程时,可以使用此功能,而该协议中的所有协议规范除外OAuth2

IdentityServer非常了解这种情况,它通过设计支持可扩展性。工厂模式,装饰器模式和IoC / DI将使您更容易在IdentityServer上实现其他功能。