我正在寻找一种方法来验证ID令牌而不调用IdP。客户端应用程序和IdP在受控环境中运行。出于这个原因,我想在我的中间件中直接验证由Keycloak提供的OIDC的访问令牌。出于性能原因,我不想再次从Keycloak中调用OIDC端点来验证现有的id/访问令牌。
这可能吗?中间件需要哪些信息?
PS我正在寻找一个PHP实现:)
如果您可以在客户端中包含公共签名密钥,那么您可以离线验证所有令牌。有很多jwt -令牌库可以为您做到这一点。
最常见的情况是客户机下载了公钥,但是没有什么可以阻止您将其包含在客户机中。只是要小心,如果您更新Keycloak中的密钥,您也要更新客户端密钥。
为了识别用户,通常使用经典会话cookie。在用户登录后,使用cookie是一种经过验证的安全的识别用户的方法。前提是你保护饼干的方法正确。(samesite, secure, httponly)
这是关于这个话题的一个很好的视频:
- alert ' oauth 20 ';//XSS对spa中OAuth值的影响