gpt4 book ai didi

http - OAuth 访问 token 和刷新 token 创建

转载 作者:可可西里 更新时间:2023-11-01 16:30:34 26 4
gpt4 key购买 nike

我正在为一个应用程序实现我自己的 OAuth 身份验证系统(支持 refresh_token),我有一些关于如何实现的问题:

  1. 客户端识别:客户端在授权服务器上注册并获得一个client_id和一个client_secret。我如何生成它?这两个值之间是否存在某种关系?
  2. 用户身份验证:客户端发送users_credentials(例如用户名+密码)+client_id并得到一个refresh_token( temp?)access_token。 access_token 是我应该在进一步请求中使用的那个,或者我应该使用 accesss_token`=F(refresh_token,access_token,client_secret)。在第二种情况下,F 函数由什么组成?
  3. 访问 token 刷新:客户端发送client_idrefresh_token并获得一个access_token(以及一个可选的新refresh_token)。 access_token 是否需要与第 2 点中相同的转换(无论是什么)?

如果我错了,何时以及如何使用 client_secret?完整的答案和具体的例子将被“赏金”。

最佳答案

  1. 授权/身份验证服务器会在您使用它们创建帐户时生成这些值(例如,当您使用 Facebook 或 Google 创建开发者帐户时)。如果您自己做这些部分,它们应该是加密安全的伪随机数或字母。请记住,客户端 ID 通常是公开可见的,因此请选择一组相当大的字母数字(我使用 30 个字符)。这个 secret 是私有(private)的,可能更难猜到,所以我选择了 30 位带有字母、数字和符号的数字。这些彼此没有关系,只是一个是公开的,另一个不是。
  2. 通常的工作方式是浏览器重定向到 auth 服务器,在 URL 中传递客户端 ID(和重定向 uri),特别是不是用户 ID 和密码。 OAuth2 的重点是客户端系统永远看不到用户名和密码,只能看到授权服务器。重定向后,auth 服务器验证客户端 id,检查用户名/密码(例如),然后返回带有临时代码的重定向 uri。此临时代码被传回 Auth 服务器以获取访问 token 。由于此调用是作为来自服务器的 POST 进行的,因此它还会传递客户端密码以验证它确实是正确的客户端系统,而不是从其他地方窃取客户端 ID 的人。此时,身份验证服务器将返回一个访问 token (和可选的刷新 token - 你不需要使用它们,我不需要)。
  3. 如果客户端系统想要让用户登录而不必一直输入用户名和密码,它可以使用刷新 token (如果可用)回调到 Auth 服务器,如果 Auth 服务器是很高兴刷新 token 仍然有效并且任何其他业务规则都是正确的,它可以在用户不参与的情况下直接返回另一个访问 token 。

我建议在这里阅读 OAuth2 规范:OAuth2 Spec RFC6749 .这可能需要一段时间,但如果您删除不需要的位并减少数据量,其中有很多有用的示例。

关于http - OAuth 访问 token 和刷新 token 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19056917/

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