OIDC/OAuth2:服务器端的会话管理

yshpjwxd  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(194)

我使用OIDC协议来执行身份验证。

我使用的流是authorization code流。

当用户通过授权服务器进行身份验证时,我的客户端应用程序后端会收到一个id_token,其中包含有关该用户的信息。

在这一点上,我认为他是经过身份验证的,因为我可以验证id_token中的声明并验证签名。

我想保留我自己的基于cookie的会话,并在完成身份验证后忽略id_token,当然我会从令牌中提取一些声明,但我不想使用任何刷新令牌。事实上,我希望有自己的会话到期时间。

当我的应用程序会话仍处于活动状态并且基于旧的声明时,我不关心用户声明在资源服务器端是否发生更改。

它够安全吗?我是否应该只依赖id_token,并在其到期后进行刷新?

zaq34kh6

zaq34kh61#

它够安全吗?

这取决于你想要受到什么保护。您是否正在将PKCE与authorization_code一起使用?

我应该只依赖id_Token,并在它过期后刷新它吗?

我建议您丢弃ID令牌并使用访问令牌显式调用user_info端点来检索用户声明,这样您就不必在客户端处理验证ID令牌“真实性”所需的加密材料。即使你可以从jwks_uri下载公钥,也只有一种方法可以确保令牌是合法的,那就是请求伪造令牌的人。仅当您处于受信任区域时,才可以对ID令牌进行加密验证以获得对其的信任。

为了加强安全性,请检查授权服务器是否支持更现代的客户端身份验证(CLIENT_SECRET_JWT、PRIVATE_KEY_JWT)。以便您的客户端身份验证不会以明文形式传输客户端秘密,而是创建一个临时JWT,并使用client_secret_jwt的HMAC(ClientSecret)或private_key_jwt的具体私钥对其进行签名)

参考资料

相关问题