OpenID Connect - 在没有调用身份提供者 (IdP) 的情况下在客户端进行令牌验证

OpenID Connect - Token Validation on client without call identity provider (IdP)

我正在寻找一种无需调用 IdP 即可验证 ID 令牌的方法。受控环境中的客户端应用程序和 IdP 运行。出于这个原因,我想直接在我的中间件中验证 Keycloak 提供的来自 OIDC 的访问令牌。出于性能原因,我不想再次从 Keycloak 调用 OIDC 端点来验证现有的 id/access 令牌。

这可能吗? 中间件需要什么信息?

PS 我正在寻找 PHP 实现 :)

如果您可以在客户端中包含 public 签名密钥,那么您可以离线验证所有令牌。有很多 JWT 令牌库可以为您做到这一点。

最常见的情况是客户端下载了 public 密钥,但没有什么可以阻止您将其包含在客户端中。如果您更新 Keycloak 中的密钥,请小心,您也会更新客户端密钥。

为了识别用户,通常使用经典会话 cookie。使用 cookie 是在用户登录后识别用户的一种行之有效且安全的方法。假设您以正确的方式保护 cookie。 (同一站点,安全,httponly)

这是一个很好的视频主题: