gpt4 book ai didi

security - OAuth2 中密码授予类型 (ROPC) 的用途是什么?

转载 作者:行者123 更新时间:2023-12-01 12:25:01 26 4
gpt4 key购买 nike

据我所知,对于我们的客户(移动应用程序),我们可以使用密码授予类型,使用 client_idclient_secret 以及用户的用户名和密码来授权客户端。

p>

我想知道使用 client_secret 与不使用 client_secret 发送用户名和密码相比有何优势?

当我们使用 client_secret 并且有人只是反编译 Android 应用程序并获得 client_secret 时,首先拥有它有什么好处?

最佳答案

您有几个问题,让我们一一解答。

What is the purpose of password grant type (ROPC) in OAuth2?

此授权类型的主要目标是为存储最终用户的用户名和密码的应用程序提供到 OAuth 2.0 的无缝迁移,作为代表他们访问其他资源的一种方式。存储用户密码是一个很大的禁忌,因此快速迁移步骤是确保开发人员迁移到 OAuth 2.0 的一种好方法。

... what is the advantage of using client_secret over sending username and password without client_secret?

用户名和密码用于验证最终用户;也就是说,要确保请求来自具有特定身份的用户。 客户端 key ,具有类似的目的,用于对客户端应用程序本身进行身份验证

优点是您可以相信请求是从已知且受信任的客户端发出的。如果需要能够安全地区分多个客户端,则最有用。

关于在 native 应用程序中使用客户端密码,有人可以反编译并获取密码,您认为这毫无值(value)是正确的,因为您不能信任那种类型的客户端身份验证。

但是,OAuth2 仅要求将客户端 secret 用于 secret 客户端,而对于无法安全维护客户端 secret 的 native 应用程序则并非如此。在这种情况下,您可以在没有客户端凭据/ secret 的情况下执行 ROPC。


这种可能性在 example tutorial from Auth0 about how you can perform a ROPC grant type request 中得到了说明。 .正如您在以下代码片段中看到的那样,它确实使用了客户端 secret 参数,因为它假定这是一个非 secret 客户端:

var options = { method: 'POST',
url: 'https://YOUR_AUTH0_DOMAIN/oauth/token',
headers: { 'content-type': 'application/json' },
body:
{ grant_type: 'password',
username: 'user@example.com',
password: 'pwd',
audience: 'https://someapi.com/api',
scope: 'read:sample',
client_id: 'XyD....23S' },
json: true };

关于security - OAuth2 中密码授予类型 (ROPC) 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40748359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com