gpt4 book ai didi

mobile - 移动应用程序如何获得对其 API 的长期访问权限?

转载 作者:行者123 更新时间:2023-12-05 02:21:23 25 4
gpt4 key购买 nike

我们公司正在构建一个移动应用程序 (iOS),它需要与我们的 API 对话,该 API 由 OpenIdConnect/OAuth2 保护,使用 IdentityServer .

我的问题是,这些天我使用的大多数应用程序都要求用户登录/注册一次,然后再也不会。

假设他们使用 OAuth2 token 访问他们的 API,他们如何实现这一点?

OAuth 通过“刷新” token 支持offline_access,这允许在用户无需再次登录的情况下获取新 token 。但是,它们也有到期时间 - 因此在以下情况下:

  1. 用户创建帐户,获取访问 token /刷新 token 。访问 token 将在 1 小时后过期,将在 2 小时后刷新 token 。
  2. 用户正在使用应用,应用在后台获取新的访问/刷新 token
  3. 用户关闭应用
  4. 用户第二天回来

此时,访问 token 和刷新 token 均已过期。他们如何在不提示用户再次输入凭据的情况下获得新凭据?

我了解 OpenIdConnect 具有身份 token 的概念,只要它在服务器上处于事件状态,就可以获取新的访问 token 而无需再次提示用户。

所以,我只能想到应用程序执行此操作的两种方式:

  1. 他们有在应用关闭时运行的后台服务,不断获取新的访问/刷新 token 。这可能吗?
  2. 在应用程序启动时,如果访问/刷新 token 已过期但身份 token ( session )仍处于事件状态,请静默访问身份验证服务器(隐藏的 WebView ?),这将自动获取一组新 token 。

2 似乎可行,但这仅适用于涉及 SSO/cookie 的基于浏览器的 OAuth 流程(隐式授权代码)。

对于具有 native 登录(应用中的 U/P)的应用,它们很可能使用不支持 SSO(无浏览器,无 cookie)的资源所有者密码凭证流程.那么他们将如何获得新 token ,除非他们在客户端应用程序本身中存储可逆的用户名/密码,然后再次将它们传递给 Auth Server 以获取新 token ?

我错过了什么?

提前致谢。

最佳答案

应用程序通常使用长期刷新 token ,这些 token 不会像您建议的那样在 30 分钟内过期,但可能会持续数周/数月,直到用户被迫再次登录。使刷新 token 的生命周期与访问 token 相同会破坏目的,因为刷新 token 应该是可用于在旧 token 过期时获取新访问 token 的 token 。刷新 token 通常比提供商处的用户身份验证 session 更有效。

关于mobile - 移动应用程序如何获得对其 API 的长期访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701420/

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