SAML with Keycloak
Keycloak 是一个开源平台,可用作用户目录来保存用户数据,同时充当单点登录的 IdP。
- 在 Keycloak 中设置 SAML(身份提供商)。
- 在 Metabase 中设置 SAML(服务提供商)。
有关更多信息,请查看我们的 使用 SAML 进行身份验证 指南。
在 Keycloak 控制台中操作
- 转到 Keycloak 管理控制台并以管理员身份登录。
- 从 管理 > 用户 创建用户。您需要填写电子邮件、名字和姓氏字段。
- 创建至少一个用户后,用户 页面顶部将出现导航选项卡。转到 凭据 为您的用户设置密码。
- 关闭 临时 切换开关。
- 点击 设置密码 保存更改。
-
从 管理 > 客户端 > 创建 创建新的 SSO 客户端
- 客户端 ID:输入小写
metabase
。 - 客户端类型:从下拉列表中选择
SAML
。 - 点击 下一步。
- 有效重定向 URI:您托管 Metabase 实例的 URL,后跟斜杠 (/) 和星号 (*)。例如,如果您在
https://:3000
本地托管 Metabase,则 URL 为https://:3000/_
。 - 主页 URL:在您的 Metabase 中,转到 管理设置 > 身份验证 > SAML。您将在 IdP 应重定向回的 URL 字段中找到您的主页 URL。
- 点击保存。
- 客户端 ID:输入小写
-
(可选,但在测试环境中建议)禁用 SSO 客户端的密钥签名。请参阅 签名 SSO 请求的设置。
- 点击 密钥 选项卡。
- 客户端签名必需: 关闭。
- 将用户属性从 Metabase 映射到 SSO 客户端。
- 点击 客户端作用域 选项卡。
- 点击
metabase-dedicated
。 - 点击 添加预定义映射器。
- 将 Keycloak 中的用户属性映射到 Metabase.
- 从 配置 > 领域设置 配置服务提供商 (Metabase)。
- 从 端点 中,选择“SAML 2.0 身份提供商元数据”。
- 一个新的 XML 文件将在新选项卡中打开。
- 保留此文件以供参考,我们将在下一节中使用它来配置 Metabase。
将字段从 Keycloak 映射到 Metabase
- 转到您的 Metabase 管理设置 > 身份验证 > SAML。
- 根据上述第 7 步中的 XML 文件
- SAML 身份提供商 URL:插入以下字符串后立即出现的 URL:
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location=
- SAML 身份提供商颁发者:插入
entityID=
后立即出现的 URL。 - SAML 身份提供商证书:输入
<X509Certificate>
标签后出现的长字符串。插入此字符串时请小心:如果添加或偏离任何字母或特殊字符,设置将无法正常工作。 - SAML 应用程序名称:
metabase
- SAML 身份提供商 URL:插入以下字符串后立即出现的 URL:
- 点击 保存更改。
- 检查页面顶部的 SAML 身份验证 是否已切换为 打开。
将 Keycloak 中的用户属性映射到 Metabase
Keycloak 默认可以导入四个用户属性:姓名、姓氏、电子邮件和角色。
假设我们希望电子邮件、姓名和姓氏在客户端(Metabase)和身份验证服务器(Keycloak)之间传递。
- 从控制台右侧的复选框中选择“X500 电子邮件”、“X500 名”和“X500 姓”。
- 点击 添加选中项。
- 点击每个属性旁边的 编辑 并进行以下更改
- SAML 属性名称:Metabase 期望接收的名称。
- SAML 属性名称格式:从下拉菜单中选择“基本”。
您可以在 Metabase 的 管理设置 > 身份验证 > SAML > 属性 中编辑属性值。
配置 Keycloak 和 Metabase 之间的组映射
您可以配置 Metabase 根据用户的 Keycloak 组自动将用户分配到 Metabase 组。
在 Keycloak 中设置组映射
在您的 Keycloak 客户端中
- 点击 客户端作用域 选项卡
- 点击已创建的 metabase-dedicated 客户端作用域。
- 点击 添加映射器 > “按配置”。
- 选择 组列表。
- 将属性名称更改为
member_of
。 - 取消选中使用“完整组路径”的选项(以便以后在 Metabase 中更容易配置)。
- 点击 保存。
在 Metabase 中设置组映射
- 在管理员设置中,转到 身份验证 > SAML。
- 在 SAML 设置中,打开 同步组成员资格
-
对于每个 Keycloak 组,设置与 Metabase 组的新映射。
目前,Keycloak 组将在 Metabase 中显示时带有斜杠字符(“/”)前缀。例如,Keycloak 中名为
sales
的组在 Metabase 中将显示为/sales
。 - 在 组属性名称 中,输入
member_of
(您 Keycloak 配置中包含组列表的属性名称)。
SAML 问题排查
有关常见问题,请参阅 SAML 故障排除。
阅读其他版本的 Metabase 的文档。