【问题标题】:How does the Authorization server validates the client_secret in Oauth2.0授权服务器如何验证 Oauth2.0 中的 client_secret
【发布时间】:2021-10-04 15:27:59
【问题描述】:

在OAuth2.0的上下文中,在RO(Resource Owner)批准同意后(点击“Allow”)-AS(Authorization Server)将客户端重定向到客户端传递的redirect_uri并添加查询参数例如(代码和状态):

https://example-app.com/redirect?code=<the auth code>&state=<state>

然后客户端应该交换(将这些发送到 AS):authorization_code + client_id + client_secret 以获得 访问令牌

Okta 定义了 client_secret as such:

client_secret - 应用程序的客户端密码。这确保了 仅从应用程序发出获取访问令牌的请求,并且 不是来自可能拦截了 授权码

但是授权服务器到底是如何知道如何验证客户端创建的client_secret ???

【问题讨论】:

    标签: oauth-2.0 authorization


    【解决方案1】:

    客户端没有创建客户端密码。当您在授权服务器上创建新客户端时,授权服务器会生成客户端密码(如果客户端类型为机密,则公共客户端没有密码)。您从授权服务器获取 client_id 和 client_secret 并在您的客户端中使用它。

    【讨论】:

    • 好的,那么在公共客户端的情况下,AS如何验证客户端是否可信?如果公共客户端不发送 client_secret
    • 您需要一个访问令牌才能访问资源,因此用户必须登录。我不确定您期望什么样的验证。公共客户的安全性不如机密客户。
    • 你应该使用PKCE来防止黑客截取授权码获取令牌。
    猜你喜欢
    • 2023-03-10
    • 2018-08-15
    • 2021-07-28
    • 1970-01-01
    • 2019-03-20
    • 2021-06-27
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多