gpt4 book ai didi

authentication - 使用Keycloak发行 “API keys”

转载 作者:行者123 更新时间:2023-12-03 22:03:00 24 4
gpt4 key购买 nike

我的设置包含三个组件:

  • 后端应用程序(Python / Flask)
  • 前端应用程序(VueJS)
  • Keycloak

  • 前端将使用Keycloak允许用户登录并使用访问 token 来验证对后端的请求。到现在为止还挺好。

    现在,我希望第三方应用程序能够针对后端发出经过身份验证的请求,我想知道如何使用Keycloak来实现该请求?我的想法是为每个客户发布一组新的凭据。然后,他们的应用程序与Keycloak对话以获取访问 token 。然后,我可以使用Keycloak来管理API所有用户的访问控制。
  • 如何在Keycloak-客户端中表示第三方应用程序?用户? ...?
  • 对于这种用例,是否有最佳实践?
  • 最佳答案

    我终于找到了一个行之有效的解决方案,似乎是向外部应用程序颁发凭据的“Keycloak方法”。要创建一组新的凭据,请添加一个新的Keycloak客户端并更改以下设置:

  • 已启用标准流程:已关闭
  • 直接访问授予已启用:关闭
  • 访问类型: secret
  • 服务帐户已启用: ON

  • 外部应用程序将使用我们新创建的客户端名称作为 client_idclient_secret是自动生成的,可以在“凭据”选项卡下找到。

    授予客户访问您的服务的权限

    如果将受Keycloak保护的服务配置为检查传入Bearer token 的 aud声明,则需要执行第二步。默认情况下,Keycloak向您的客户端发行的JWT token 的受众将设置为您的客户端名称,因此它们将被您的服务拒绝。您可以使用 Client Scopes修改该行为:
  • 创建新的客户范围
  • 选择“受众模板”
  • 选择您要授予外部应用程序访问权限的服务,然后单击“下一步”。
  • 将范围添加到刚创建的客户端(“客户端范围”选项卡)

  • 现在,Keycloak会将您服务的名称添加到它发布给您的新客户端的所有JWT token 的 aud声明中。有关更多详细信息,请查看 Service Accounts上的Keycloak文档。

    交换客户端凭证以获得访问 token

    外部应用程序现在可以使用其凭据从Keycloak的 token 端点获取访问 token :
    POST {keycloak-url}/auth/realms/atlas/protocol/openid-connect/token
  • Content-Type header 设置为application/x-www-form-urlencoded
  • 使用客户端ID 作为用户,并将客户端密码作为密码
  • ,使用基本身份验证对请求进行身份验证。
  • 在请求正文中设置grant_type=client_credentials
  • 关于authentication - 使用Keycloak发行 “API keys”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52230634/

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