【问题标题】:Is the Authorization Code Grant still necessary when using TLS?使用 TLS 时是否还需要授权码授予?
【发布时间】:2020-09-07 11:54:31
【问题描述】:

oAuth 流程中授权码的主要目的是防止重放攻击,TLS 还可以防止重放攻击。

如果您只是使用 TLS 向启用 oAuth 的服务器发出密码授权请求,这还不够吗?

【问题讨论】:

    标签: ssl oauth tls1.2


    【解决方案1】:

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

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

    访问令牌凭据必须仅使用 TLS 作为传输 在第 1.6 节中描述的服务器身份验证由
    定义 [RFC2818]。

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

    • 授权码
    • PKCE
    • 隐式(旧版
    • 客户端凭据
    • 密码(旧版
    • 设备代码
    • 刷新令牌

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

    • 您的用户无缘无故地将其凭据暴露给第 3 方。这就是 OAuth 存在的原因,它不与第三方共享凭据(例如:Service Foo)以访问他们的服务(例如 Google、Facebook)
    • 用户无法控制您的 Service Foo 可以使用这些凭据做什么。

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

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 2020-01-31
      • 2020-09-08
      • 2018-10-25
      • 1970-01-01
      • 2016-06-17
      • 2019-07-10
      • 1970-01-01
      • 2018-07-05
      相关资源
      最近更新 更多