使用TLS时是否仍需要授权码授予?

时间:2020-09-07 11:54:31

标签: ssl oauth tls1.2

oAuth流中授权代码的主要目的是防止重播攻击,TLS也可以防止重播攻击。

如果仅使用TLS向启用了oAuth的服务器发出密码授予请求,那还不够吗?

1 个答案:

答案 0 :(得分:1)

oAuth流程中授权代码的主要目的是 防止重放攻击

我认为授权码流的主要目的与防止重放攻击不同。 OAuth对此不做任何保证,无论授予如何,OAuth 2.0 suggests我们始终对所有授予使用TLS来传输访问令牌:

访问令牌凭证必须仅使用TLS作为 在1.6节中进行了描述,其中服务器身份验证由
定义 [RFC2818]。

OAuth 2.0中也有其他授权,例如;

  • 授权码
  • PKCE
  • 隐含(传统
  • 客户凭证
  • 密码(旧版
  • 设备代码
  • 刷新令牌

,每个都有其自己的目的。密码流是遗留的,由于以下原因,您应该有充分的理由继续使用它:

  • 您的用户无缘无故地将其凭据公开给第三方。这是OAuth存在的原因,它不与第三方共享凭据(例如Service Foo)以获取其服务(例如Google,Facebook)的访问权限
  • 用户没有任何控制权,您的 Service Foo 可以使用这些凭据进行操作。

像隐式流一样,这是必需的,但是现在根据设备和PKCE的用法,将密码和隐式流都替换为设备和PKCE。例如;如果一个应用程序使用“密码授予”的主要原因是其客户端不支持重定向,则他们现在也可以使用“设备代码授予”。