session - 在获取访问令牌以代表用户执行 API 请求后,保持用户会话和令牌连接的“正确”方式是什么?
问题描述
我目前正在开发一个身份 4 服务器,一个受身份服务器上定义的范围保护的 API,以及将使用来自 API 的信息的移动应用服务器。
到目前为止,我已经很好地掌握了如何使用授权和访问令牌以及如何执行正确的流程,但是当我开始查看移动应用程序和服务器之间的用户会话时,我陷入了两难境地。在收到访问和身份令牌后,它基本上用作用户登录/授权的确认,这将是存储它并使会话与应用程序保持活动状态的“正确”方式?
最初我想使用 cookie,但被告知它不适用于移动应用程序(我对 android/ios 几乎一无所知),随后我考虑在服务器上创建 JWT,考虑到这似乎是错误的已经产生令牌的身份服务器的存在。有了这个,我如何将会话与访问令牌相关联以执行 API 请求?
TLDR:
- 在为客户端获取访问权限和 id 令牌后,有哪些“正确”方法可以使客户端和移动应用程序之间的会话保持活动状态?
- 当需要 API 请求时,如何将会话与访问令牌相关联?
谢谢 !
解决方案
对于现代本机移动应用程序,我建议将 authorization_code 流(通过设备上的默认浏览器)与 PKCE 一起使用,并将刷新令牌存储在设备的安全飞地中。这可以通过内置的 PIN 或生物特征来保护。
使用该(经过仔细保护的)刷新令牌,您可以维持长期会话,而无需与 OIDC 服务进行前端通道(即 Web 浏览器)交互。
推荐阅读
- rust - 引用和变异 id_tree Rust 的问题
- python - 如何在python中将字符串日期(2021年1月25日)转换为ymd日期(2021-01-01)
- r - R Markdown文档中所有方程式中的显示样式文档整个文档
- javascript - JS:3个滚动条同步
- wpf - 订阅任何没有子控件实例的冒泡 WPF 子控件路由事件
- python - Pytorch:copy.deepcopy 与 torch.tensor.contiguous()?
- c# - 是否可以将事件智能感知功能添加到 Visual Studio 中的自定义类
- azure-cosmosdb - 将数据复制到 cosmosDb 时出现 DFExecutorUserError
- react-native - Using Map function over an array of objects inside React native not working
- javascript - Promise 中的递归