Keycloak 提供方在 Users & Permissions 中的设置

页面摘要: 通过在 Keycloak 中配置一个客户端,然后在 Strapi 的管理设置中启用并填写 Keycloak 提供方详细信息,将 Keycloak 设置为 Strapi Users & Permissions 功能的身份提供者。

本页介绍如何为 Users & Permissions 功能 设置 Keycloak 提供方。

WARNING

Keycloak 配置

NOTE

Keycloak 接受 localhost URL。

无需使用 ngrok。

  1. 访问你的 Keycloak 管理仪表板
  2. 如果你还没有 realm,需要先创建一个
  3. 在你的 realm 的 Clients(客户端)部分,创建一个新的客户端
  4. 在 capability config(能力配置)下,确保将 Client Authentication(客户端身份验证)设置为开启,以便能够创建私钥
  5. 在 access settings(访问设置)下,确保设置以下值:
    • Valid redirect URIs(有效的重定向 URI):http://localhost:1337/api/connect/keycloak/callback 和 http://localhost:1337/api/connect/keycloak
    • Allowed Web Origins(允许的 Web 来源):http://localhost:3000 和 http://localhost:1337
  6. 在 Client Scopes(客户端范围)部分,确保将 email 和 profile 范围设置为默认
  7. 在 Client Scopes(客户端范围)部分,确保将 openid 范围设置为默认;如果没有,你需要在全局 Client Scopes(客户端范围)中手动创建它

Strapi 配置

  1. 访问 User & Permissions 提供方设置页面,地址为 http://localhost:1337/admin/settings/users-permissions/providers
  2. 点击 Keycloak 提供方
  3. 填写以下信息:
    • Enable:ON
    • Client ID:<Your Keycloak Client ID>
    • Client Secret:<Your Keycloak Client Secret>
    • Subdomain:<Your Keycloak realm url>,例如 keycloak.example.com/realms/strapitest 或 keycloak.example.com/auth/realms/strapitest 前面不带协议
    • 指向你前端应用的重定向 URL:http://localhost:3000/connect/keycloak/redirect
    • (可选)如果你有自定义的 JWKS URL,请设置 JWKS URL,例如 https://keycloak.example.com/auth/realms/strapitest/protocol/openid-connect/certs

你的配置已完成。启动后端和 react 登录示例应用,访问 http://localhost:3000 并尝试连接到你所配置的提供方。

从 Strapi v4 迁移

Strapi v4 的扩展通常通过 providersRegistry.register() 注册 Keycloak。该方法在 Strapi 5 中已不再可用。

在 Strapi 5 中,请从 /src/index.js|ts 中的 register() 函数 调用 providers-registry 服务的 add() 方法。

详情请参阅自定义提供方指南。

如果你仍然在 registry 对象上调用 register(),Strapi 会抛出 TypeError: providersRegistry.register is not a function。