【问题标题】:With OAuth2, should I send the auth code or tokens to the service from a mobile client?使用 OAuth2,我应该将身份验证代码或令牌从移动客户端发送到服务吗?
【发布时间】:2023-03-07 19:51:01
【问题描述】:

所以我从移动客户端对 OAuth2 的理解是:

  1. 移动客户端重定向页面以使用客户端 ID 获取用户身份验证
  2. 资源持有者回复auth_code
  3. auth_code 被替换为 access_tokenrefresh_token

在上述情况下,如果您有支持您的移动应用程序的网络服务,您将永久存储access_tokenrefresh_token,这将允许您继续访问用户的数据,前提是他们没有' t 撤销了您的权限。

所以我的问题是:应该将auth_code 发送到服务,并在那里兑换代币吗?或者客户端应该交换auth_code,并将生成的令牌发送到服务?没关系,或者不同的实现可能不同?我假设客户端密码只存储在服务上,我的理解是需要将refresh_token 换成新的access_token,但我不确定auth_code

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

    使用授权码请求令牌时也需要客户端密码。

    客户端可以直接请求令牌或将其委托给服务 - 没有硬性规定说您应该做一个或另一个。

    我会说如果服务要使用令牌,可能委托给该服务最有意义 - 所以令牌留在那里。如果客户端要使用令牌,则两种方法都有效。

    【讨论】:

    • 啊,我明白了 - 客户端上的客户端密码不会有安全风险吗?我的理解是,这就像你的应用程序的密码,证明你就是你。
    • 是的,将客户端密码存储在客户端内部存在安全风险 - 因为您无法阻止某人从那里提取它,但如果您将客户端密码存储在服务上,那么客户端可以请求它并使用它 - 无需存储它 - 只要客户端和服务之间的通信被加密(无论如何都应该)安全性就可以了
    猜你喜欢
    • 2019-12-01
    • 2015-12-13
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2016-07-13
    • 2020-06-09
    相关资源
    最近更新 更多