SAML with Keycloak
Keycloak 是一个开源平台,可用作用户目录,用于保存用户数据,同时充当单点登录的 IdP。
- 在 Keycloak 中设置 SAML(身份提供商)。
- 在 Metabase 中设置 SAML(服务提供商)。
有关更多信息,请参阅我们的 SAML 认证指南。
在 Keycloak 控制台中操作
- 转到 Keycloak 管理控制台,并以管理员身份登录。
- 在 管理 > 用户 中创建用户。您需要填入电子邮件、名字和姓氏字段。
- 创建至少一个用户后,用户 页面的顶部将出现导航选项卡。转到 凭据 为您的用户设置密码。
- 关闭 临时 开关。
- 点击 设置密码 以保存您的更改。
-
在 管理 > 客户端 > 创建 中创建一个新的 SSO 客户端
- 客户端 ID:请输入小写的
metabase。 - 客户端类型:从下拉列表中选择
SAML。 - 点击 下一步。
- 有效重定向 URI:托管 Metabase 实例的 URL,后跟斜杠(/)和星号(*)。例如,如果您在本地托管 Metabase,URL 为
https://:3000,则 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:插入紧跟字符串
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location=之后的 URL。 - SAML 身份提供商颁发者:插入紧跟
entityID=之后的 URL。 - SAML 身份提供商证书:输入
<X509Certificate>标签之后的长字符串。插入此字符串时请小心:如果添加或遗漏了任何字母或特殊字符,设置将无法正常工作。 - SAML 应用程序名称:
metabase
- SAML 身份提供商 URL:插入紧跟字符串
- 点击 保存更改。
- 检查页面顶部的 SAML 认证 是否已打开。
将 Keycloak 中用户的属性映射到 Metabase
Keycloak 默认可以导入四种用户属性:姓名、姓氏、电子邮件和角色。
假设我们希望电子邮件、姓名和姓氏在客户端(Metabase)和身份验证服务器(Keycloak)之间传递。
- 从控制台右侧的复选框中选择“X500 email”、“X500 givenName”和“X500 surname”。
- 点击 添加所选。
- 点击每个属性旁边的 编辑 并进行以下更改
- SAML 属性名称:Metabase 期望接收的名称。
- SAML 属性名称格式:从下拉菜单中选择“Basic”。
您可以在 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 的文档。