首页 > 解决方案 > 在获取访问令牌以代表用户执行 API 请求后,保持用户会话和令牌连接的“正确”方式是什么?

问题描述

我目前正在开发一个身份 4 服务器,一个受身份服务器上定义的范围保护的 API,以及将使用来自 API 的信息的移动应用服务器。

到目前为止,我已经很好地掌握了如何使用授权和访问令牌以及如何执行正确的流程,但是当我开始查看移动应用程序和服务器之间的用户会话时,我陷入了两难境地。在收到访问和身份令牌后,它基本上用作用户登录/授权的确认,这将是存储它并使会话与应用程序保持活动状态的“正确”方式?

最初我想使用 cookie,但被告知它不适用于移动应用程序(我对 android/ios 几乎一无所知),随后我考虑在服务器上创建 JWT,考虑到这似乎是错误的已经产生令牌的身份服务器的存在。有了这个,我如何将会话与访问令牌相关联以执行 API 请求?

TLDR:

谢谢 !

标签: sessioncookiesoauth-2.0jwtidentityserver4

解决方案


对于现代本机移动应用程序,我建议将 authorization_code 流(通过设备上的默认浏览器)与 PKCE 一起使用,并将刷新令牌存储在设备的安全飞地中。这可以通过内置的 PIN 或生物特征来保护。

使用该(经过仔细保护的)刷新令牌,您可以维持长期会话,而无需与 OIDC 服务进行前端通道(即 Web 浏览器)交互。


推荐阅读