我使用OIDC协议来执行身份验证。
我使用的流是authorization code
流。
当用户通过授权服务器进行身份验证时,我的客户端应用程序后端会收到一个id_token
,其中包含有关该用户的信息。
在这一点上,我认为他是经过身份验证的,因为我可以验证id_token
中的声明并验证签名。
我想保留我自己的基于cookie的会话,并在完成身份验证后忽略id_token
,当然我会从令牌中提取一些声明,但我不想使用任何刷新令牌。事实上,我希望有自己的会话到期时间。
当我的应用程序会话仍处于活动状态并且基于旧的声明时,我不关心用户声明在资源服务器端是否发生更改。
它够安全吗?我是否应该只依赖id_token
,并在其到期后进行刷新?
1条答案
按热度按时间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
的具体私钥对其进行签名)参考资料