我是oAUth2的新手,我想尝试一些事情。
我理解oAuth2所涉及的基本原则,但我不确定如何在我的情况下实现它。
我正在编写一个应用程序,代表用户自动执行手动过程并执行某些任务(更新/请求状态等)。我们连接的API使用oAuth2来授予我们的应用程序权限。我们计划让用户在与我们一起创建新帐户时授予我们的申请许可。
我了解用户将请求提供给我们的应用程序的身份验证代码。然后我们的应用程序将使用身份验证代码生成访问令牌。
我们只想这样做一次。然后充当用户发送和接收通知,而无需用户使用其凭据登录服务。
由于auth代码和auth令牌过期,我不确定如何实现此操作而无需存储用户凭据以获取身份验证代码。我猜这是一种常见的情况。
我需要做些什么来获得我想要的成就?
答案 0 :(得分:3)
如果由授权服务器提供,则可以使用 RefreshToken 获取新的 AccessToken 。
如果没有提供,我会联系Api提供商,您永远不应该存储用户凭据。事实上,如果OAuth协议作为客户端得到很好的实现,您甚至无法获得客户端凭据。当用户必须登录时,您应该将用户重定向到授权服务器,用户应该登录,然后授权服务器应该将授权令牌重定向到您的应用程序。
另请参阅OAuth 2.0规范中有关刷新令牌的说明:
刷新令牌是用于获取访问令牌的凭据。刷新 令牌由授权服务器发给客户端 用于在当前访问令牌时获取新的访问令牌 变得无效或过期,或获得额外的访问令牌 具有相同或更窄的范围(访问令牌可能有更短的 生命周期和权限少于资源授权的权限 所有者)。发布刷新令牌是可选的,由...决定 授权服务器。如果授权服务器发出刷新 令牌,在发出访问令牌时包含它
注意强>
如果您使用RefreshToken请求新的AccessToken并且响应包含新的RefreshToken,则应覆盖当前保存的RefreshToken。换句话说,你应该总是使用你收到的最新的RefresthToken。