gpt4 book ai didi

jwt - OpenID Connect JWT token 验证和后端 api 的使用策略 - jwks 还是 session ?

转载 作者:行者123 更新时间:2023-12-04 07:16:07 27 4
gpt4 key购买 nike

我对使用 OIDC 的后端 api 授权流程有点困惑。
我已将 SPA 应用程序与其余后端 api react 。
我想允许应用程序客户端注册他们自己的 OIDC 提供商以进行登录/注册。
OpenID Connect JWT token 验证和使用的策略是什么?
目前我这样做:

  • 客户添加提供者指定 clientId , clientSecret , issuer .
  • 在后端,我使用 OIDC Discovery 获取提供者元数据.
  • 在客户端使用具有身份验证代码流的提供程序点击登录按钮后,我们最终在后端回调处理程序中交换代码:
  •   {
    access_token: 'str',
    id_token: 'str.str.str',
    scope: 'openid profile email',
    expires_at: 1628797367,
    token_type: 'Bearer'
    }
    现在是一个问题,下一步该怎么做?将什么 token 发送到应用程序以供 api 请求使用以及如何在每个请求上验证它?
    我可以发 id_token到应用程序,然后在每个 api 请求上使用从提供程序加载的 JWKS验证 id_token .
    或者我可以根据 id_token 授权/注册用户并创建我自己的 JWT token ,该 token 将发送到应用程序以供 api 请求使用。
    二手包: hapi , node-openid-client

    最佳答案

    因此 id_token 可以提供有关经过身份验证的用户的信息。访问 token 是您要用于访问用户资源的 token 。
    您可以在后端验证和解码 id_token 并使用它在您的系统中注册一个新用户,并为他们创建一个 session - 或者如果它是一个已经注册的用户,则只创建 session 。
    问题是 - 您的 SPA 调用的后端资源是什么。如果这些是 OIDC 提供者控制的 API,那么您只需将它们的访问 token 添加到请求中,它将被验证。不过,我假设这些是您的 API。然后你有两个选择:

  • 如果您从 OP 收到访问 token ,您仍然可以使用它来访问您的 API,前提是 OP 公开了自省(introspection)端点。每次从 SPA 收到请求时,您都必须调用 OP 以检查 token 是否有效,并可能获取与该 token 相关的数据 - 例如发行者、主题、受众等。您可以使用这些声明来执行授权决策- 是否允许访问该请求。
  • 使用 OP 完成授权代码流程后,您可以根据从 OP 获得的信息颁发自己的访问 token 。然后,您可以轻松地在每个请求上验证该 token 。在这种情况下,您可以更好地控制该 token 中的最终结果 - 例如,您可以为用户引入角色等。

  • 如果您只访问自己的 API,并且您已经有一个用于执行 OIDC 流的后端,我建议您将来自 OP 的响应保留在后端,并向 SPA 发出一个普通的旧 session 。您的 API 可以通过调用您的授权后端来验证 session 。这样,您就不会在 SPA 中放置任何代币。

    关于jwt - OpenID Connect JWT token 验证和后端 api 的使用策略 - jwks 还是 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68748383/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com