Oauth 2.0 IdentityServer流

Oauth 2.0 IdentityServer流,oauth-2.0,openid,thinktecture-ident-server,openid-connect,identityserver3,Oauth 2.0,Openid,Thinktecture Ident Server,Openid Connect,Identityserver3,IdentityServer支持在枚举中定义并为客户端设置的不同OpenId连接流。每种类型的流都有示例,文档中也有很多引用,但我找不到一个简单的定义列表来说明流在文档中是什么,就好像它们太明显而无法用语言解释一样。但我想他们不是。你能告诉我们更多关于这些的区别吗,也许我们可以把它们添加到文档中 那么什么是:隐式流、资源所有者密码凭证流、授权代码流、客户端凭证流、自定义授权流和混合流?还有哪些是OAuth流,哪些是OpenID连接流 谢谢 参见规范-已全部记录: 和 此外,我最近还写了一篇总

IdentityServer支持在枚举中定义并为客户端设置的不同OpenId连接流。每种类型的流都有示例,文档中也有很多引用,但我找不到一个简单的定义列表来说明流在文档中是什么,就好像它们太明显而无法用语言解释一样。但我想他们不是。你能告诉我们更多关于这些的区别吗,也许我们可以把它们添加到文档中

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


谢谢

参见规范-已全部记录:

此外,我最近还写了一篇总结,针对不同的应用程序类型对其进行了细分:


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

更新:

来自leastPrivilage的第一个链接:和

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

授权代码流:OAuth 2.0流,其中

  • 从授权端点返回授权代码
  • 所有令牌(作为第二阶段,交换授权代码)都从令牌端点返回
  • 用于基于服务器的调用(API),可以维护其客户端机密的机密性。只要没有人可以访问“客户机密”,就可以实现更高的安全性
隐式流:OAuth 2.0流,其中

  • 所有令牌都直接从授权端点返回
  • 并且既不使用令牌端点也不使用授权码
  • 用于移动和基于web的应用程序,这些应用程序无法维护客户端机密的机密性,因此需要由身份验证服务器本身颁发令牌。这不太安全,建议将服务器设置为拒绝API使用的隐式流调用,并仅允许基于浏览器和基于移动的应用程序使用隐式流调用
混合流:OAuth 2.0流,其中

  • 从授权端点返回授权代码
  • 一些令牌直接从授权端点返回,而其他令牌则从令牌端点返回(作为第二阶段,交换授权代码)
  • 在需要两个流时使用
中定义的流只是客户端从身份提供商服务器接收
访问令牌的几种方式;在这种情况下,
IdentityServer
。除非您完全理解中指定的实体,例如
资源所有者
用户代理
、以及
资源服务器
,否则理解流并不容易。在中有一些关于这些实体(确切地说是角色)的简要说明


授权代码流:在发出
访问令牌之前发出
授权代码

  • 客户请求一个
    授权码。
  • IdentityServer验证客户端,并要求资源所有者授予授权,以发布
    授权代码
  • 然后,客户端使用给定的
    授权代码请求
    访问令牌
  • 授权服务器直接向客户端发出
    访问令牌

隐式代码流:即使未提供
授权代码,也会发出
访问令牌

  • 客户端直接请求
    访问令牌
  • IdentityServer跳过对客户端的验证(在某些情况下,它会部分进行验证),但仍要求资源所有者授予颁发
    访问令牌的授权
  • 此流从不发出
    授权代码
隐式流被认为是使用脚本语言(如
javascript
)的客户端的理想流,因为客户端不必分别请求
授权代码
访问令牌
,从而减少客户端的一次网络往返


客户端凭据流:未经资源所有者许可,发出
访问令牌

  • 客户端直接请求访问令牌
  • IdentityServer验证客户端并立即发出
    访问令牌
当客户端同时也是资源所有者时,这非常理想,因此它不需要任何授权权限,直到
访问令牌


资源所有者流:如果客户端具有资源所有者的凭据(例如Id/密码),则发出
访问令牌

  • 客户端直接请求
    访问令牌
  • IdentityServer验证客户端并检查资源所有者的身份
  • 如果有效,客户端将立即获得访问令牌
此流程非常适合于您认为与他们共享ID和密码绝对安全的客户端


混合流(OIDC流):发布
授权码
访问令牌

这是
授权代码流
隐式代码流
的组合。这就是为什么它被称为混合型


自定义流

这实际上是一个可定制的