SAML with Keycloak

Keycloak 是一个开源平台,可用作用户目录,用于保存用户数据,同时充当单点登录的 IdP。

  1. 在 Keycloak 中设置 SAML(身份提供商)。
  2. 在 Metabase 中设置 SAML(服务提供商)。

有关更多信息,请参阅我们的 SAML 认证指南

在 Keycloak 控制台中操作

  1. 转到 Keycloak 管理控制台,并以管理员身份登录。
  2. 管理 > 用户 中创建用户。您需要填入电子邮件、名字和姓氏字段。
  3. 创建至少一个用户后,用户 页面的顶部将出现导航选项卡。转到 凭据 为您的用户设置密码。
    • 关闭 临时 开关。
    • 点击 设置密码 以保存您的更改。
  4. 管理 > 客户端 > 创建 中创建一个新的 SSO 客户端

    • 客户端 ID:请输入小写的 metabase
    • 客户端类型:从下拉列表中选择 SAML
    • 点击 下一步
    • 有效重定向 URI:托管 Metabase 实例的 URL,后跟斜杠(/)和星号(*)。例如,如果您在本地托管 Metabase,URL 为 https://:3000,则 URL 为 https://:3000/_
    • 主页 URL:在您的 Metabase 中,转到 管理设置 > 认证 > SAML。您将在 IdP 应重定向回的 URL 字段中找到您的主页 URL。
    • 点击保存
  5. (可选,但在测试环境中推荐) 为 SSO 客户端禁用密钥签名。请参阅 签名 SSO 请求的设置

    • 点击 密钥 选项卡。
    • 客户端签名要求:关闭。
  6. 将 Metabase 的用户属性映射到 SSO 客户端。
  7. 配置 > 领域设置 中配置服务提供商(Metabase)。
    • 端点 中,选择“SAML 2.0 身份提供商元数据”。
    • XML 文件将在新标签页中打开。
    • 请保留此文件以供参考,我们将在下一节中使用它来配置 Metabase。

将 Keycloak 的字段映射到 Metabase

  1. 转到您的 Metabase 管理设置 > 认证 > SAML
  2. 从上面的步骤 7 中的 XML 文件
    • SAML 身份提供商 URL:插入紧跟字符串 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location= 之后的 URL。
    • SAML 身份提供商颁发者:插入紧跟 entityID= 之后的 URL。
    • SAML 身份提供商证书:输入 <X509Certificate> 标签之后的长字符串。插入此字符串时请小心:如果添加或遗漏了任何字母或特殊字符,设置将无法正常工作。
    • SAML 应用程序名称metabase
  3. 点击 保存更改
  4. 检查页面顶部的 SAML 认证 是否已打开。

将 Keycloak 中用户的属性映射到 Metabase

Keycloak 默认可以导入四种用户属性:姓名、姓氏、电子邮件和角色。

假设我们希望电子邮件、姓名和姓氏在客户端(Metabase)和身份验证服务器(Keycloak)之间传递。

  1. 从控制台右侧的复选框中选择“X500 email”、“X500 givenName”和“X500 surname”。
  2. 点击 添加所选
  3. 点击每个属性旁边的 编辑 并进行以下更改
    • SAML 属性名称:Metabase 期望接收的名称。
    • SAML 属性名称格式:从下拉菜单中选择“Basic”。

您可以在 Metabase 的 管理设置 > 认证 > SAML > 属性 中编辑属性值。

配置 Keycloak 和 Metabase 之间的组映射

您可以配置 Metabase,使其根据用户在 Keycloak 中的组自动将用户分配到 Metabase 组。

在 Keycloak 中设置组映射

在您的 Keycloak 客户端中

  1. 点击 客户端范围 选项卡
  2. 点击已创建的 metabase-dedicated 客户端范围。
  3. 点击 添加映射器 > “按配置
  4. 选择 组列表
  5. 将属性的名称更改为 member_of
  6. 取消选择使用“完整组路径”的选项(这样在 Metabase 中配置会更容易)。
  7. 点击 保存

在 Metabase 中设置组映射

  1. 在管理设置中,转到 认证 > SAML
  2. 在 SAML 设置中,打开 同步组会员资格
  3. 为每个 Keycloak 组,设置一个新的到 Metabase 组的映射。

    目前,Keycloak 组将在 Metabase 中显示为在组名前面加上斜杠字符(“/”)。例如,Keycloak 中名为 sales 的组将在 Metabase 中显示为 /sales

  4. 组属性名称 中,输入 member_of(在您的 Keycloak 配置中具有组列表的属性名称)。

SAML 问题排查

有关常见问题,请访问 SAMl 疑难解答

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档? 提议更改。
© . This site is unofficial and not affiliated with Metabase, Inc.