【问题标题】:How to authenticate API caller using Client ID and Secret如何使用 Client ID 和 Secret 对 API 调用者进行身份验证
【发布时间】:2021-10-07 16:27:36
【问题描述】:

我已经使用 API 注册了客户端应用程序,他们给了我一个客户端 ID 和一个秘密。有时我必须包含我的客户端 ID 才能启动此 API 的使用。例如 Azure AD。

但是客户端 Secret 究竟是如何使用的呢?他们是否像用户/密码组合一样比较我的客户 ID 和密码?还是客户端密钥用于加密呼叫或仅包含哈希?

我已经阅读了几个 Oauth 和其他文档,但我没有找到对此的解释。

PS:我正在尝试构建一个快速微服务,而我的其他服务希望通过身份验证与它进行对话,而无需会话。考虑为其他服务采用客户端/秘密模型,但我必须实现它。

TIA 提供任何解释或线索!

【问题讨论】:

    标签: node.js express authentication oauth


    【解决方案1】:

    客户端 ID 和客户端密码就像您项目的用户名和密码。

    当您的项目需要交换授权代码时,它会使用密钥来验证它是否确实是它所说的客户端。

    因此,这样的命令通过将应用程序的客户端 ID 和客户端密码发送到授权服务器来交换授权代码,这样服务器就知道客户端是它所说的客户端,因为它知道密码。

    curl -s \
    --request POST \
    --data "code=4/1AY0e-g7BhBt0QU9f5HTgNDGNR1GYtH12q4xvgL_D2Q34A&client_id=XXXX.apps.googleusercontent.com&client_secret=zYAoXDam3mqsdwabh3dQ3NTh&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
    https://accounts.google.com/o/oauth2/token 
    

    Understanding Google OAuth 2.0 with curl

    【讨论】:

    • @DalmTo 感谢您的澄清!如果您不介意,我有一个后续问题。这意味着以可见的方式发送客户端密码不是一个好主意。当页面重定向到 idp 时,是否通过页眉携带客户端密码?
    • 与身份服务器的所有通信都将通过 HTTPS 进行,因此它应该是安全的。但是你是对的,你永远不应该分享你的客户 ID 和客户密码。
    • 感谢您提供的信息!很有帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 2018-06-08
    • 2019-07-20
    • 2019-08-17
    • 2014-05-12
    • 2018-01-22
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多