SAML 与 Okta
您还可以选择配置组映射,以自动将 Okta 用户分配到 Metabase 组。
有关常规 SAML 信息,请参阅使用 SAML 进行身份验证。
在 Metabase 中启用基于 SAML 的 SSO
在管理区域的管理>设置部分中,转到身份验证选项卡,然后单击 SAML 下的设置。
您将看到如下所示的 SAML 配置表单
您需要使用此表单中的信息在 Okta 中设置 SAML。
在 Okta 中设置 SAML
在 Metabase 中配置 SAML 身份验证之前,您需要在 Okta 中创建一个新的 SAML 应用程序集成。
在 Okta 中创建应用程序集成
从 Okta 管理控制台,创建一个新的 SAML 应用程序集成,以与 Metabase 一起使用。
配置 Okta SAML 设置
要将 Okta 应用程序与 Metabase 集成,您需要使用在 Metabase 的管理面板 > 身份验证 > SAML 部分中找到的信息。
常规设置
Okta SAML | Metabase SAML |
---|---|
单点登录 URL | IdP 应重定向到的 URL。这是您的 Metabase 站点 URL – 它应以 https:// 开头,并以 /auth/sso 结尾。 |
受众 URI (SP 实体 ID) | SAML 应用程序名称(默认为“Metabase”) |
属性语句
在 Okta 应用程序 SAML 设置的属性语句(可选)部分中,创建以下属性语句
- 电子邮件地址
- 名字(given name)
- 姓氏(surname)
即使 Okta 说这些是可选的,但 Metabase 仍需要它们。Okta 将在身份验证期间将这些属性传递给 Metabase,以自动让用户登录 Metabase。
名称 | 值 |
---|---|
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
user.email |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname |
user.firstName |
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname |
user.lastName |
Okta 中属性语句的名称应与 Metabase 中的属性名称匹配(名称区分大小写)。如果您想在 Okta 应用程序配置中使用非默认属性名称,您还需要在 Metabase 的管理面板 > 身份验证 > SAML 中更改属性字段的名称。
确保用户无法编辑其电子邮件地址属性。为了让用户登录到您的 Metabase(或在首次登录时创建 Metabase 账户),您的 IdP 会将电子邮件地址属性传递给 Metabase。如果用户可以更改电子邮件地址属性,他们可能会访问到他们自己账户以外的其他 Metabase 账户。
Okta 断言示例
您可以单击预览 SAML 断言以查看 Okta 生成的 XML 文件。它应如下所示
<saml2:Assertion
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="id4170618837332381492734749" IssueInstant="2019-03-27T17:56:11.067Z" Version="2.0">
<saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://www.okta.com/Issuer</saml2:Issuer>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">userName</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData NotOnOrAfter="2019-03-27T18:01:11.246Z" Recipient="https://metabase.mycompany.com/auth/sso"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2019-03-27T17:51:11.246Z" NotOnOrAfter="2019-03-27T18:01:11.246Z">
<saml2:AudienceRestriction>
<saml2:Audience>my-metabase-app</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2019-03-27T17:56:11.067Z">
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
Cam
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
Saul
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
[email protected]
</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
在 Metabase 中设置 SAML
在 Okta 中设置 SAML 应用程序后,您需要在 Metabase 中配置 SAML。您需要从 Okta 获取一些信息
- 在 Okta 中,转到您的 Metabase 应用程序集成的页面。
- 转到 Sign On 选项卡。
- 单击查看 SAML 设置说明。
使用 Okta SAML 说明中的信息填写 Metabase SAML 表单,该表单位于管理面板 > 身份验证 > SAML 中
Metabase SAML | Okta SAML |
---|---|
SAML 身份提供商 URL | 身份提供商单点登录 URL |
SAML 身份提供商证书 | X.509 证书* |
SAML 身份提供商颁发者 | 身份提供商颁发者 |
*确保包含任何页眉和页脚注释,例如 ---BEGIN CERTIFICATE---
和 ---END CERTIFICATE---
。
配置组映射
您可以配置 Metabase,以便在用户登录时自动将他们分配到 Metabase 组。您需要创建一个 SAML 属性语句,将组信息传递给 Metabase,然后配置 Metabase 以读取此属性并将其内容映射到 Metabase 组。
您可以使用以下任一方法:
- 自定义用户配置文件属性,其中包含用户的 Metabase 组。
- Okta 用户组.
使用用户配置文件属性分配组
您可以创建一个自定义用户配置文件属性,并使用每个用户的 Metabase 组填充它。
- 在 Okta Profile Editor 中,创建一个新的用户配置文件属性,名为
metabaseGroups
,它可以是string
或string array
。 -
对于 Okta 中的每个用户,使用他们的 Metabase 组填充
metabaseGroups
属性。我们建议您在 Okta 中使用与 Metabase 中相同的组名称。
Metabase 组不必与 Okta 用户组对应。如果您想使用 Okta 用户组来设置 Metabase 组,请参阅将 Okta 用户组映射到 Metabase 组。
您的 Okta 帐户必须启用
SAML_SUPPORT_ARRAY_ATTRIBUTES
,因为 Metabase 期望 Okta 将属性作为数组传递。如果您的 Okta 帐户较旧,您可能需要联系 Okta 支持部门以启用SAML_SUPPORT_ARRAY_ATTRIBUTES
。 -
在 Metabase 应用程序集成的 Okta SAML 设置中,添加一个新的属性语句
MetabaseGroupName
,其值为user.metabaseGroups
(您刚刚创建的配置文件属性) - 在 Metabase SAML 设置中
- 启用同步组成员资格。
- 对于您添加到 Okta 用户的每个组,设置到 Metabase 组的新映射。
-
在组属性名称中,输入
MetabaseGroupName
(SAML 属性语句的名称)。
将 Okta 用户组映射到 Metabase 组
- 创建与 Metabase 组对应的 Okta 用户组,并将它们分配给 Okta 用户。
-
在 Metabase 应用程序集成的 Okta SAML 设置中,添加一个新的属性语句
MetabaseGroupName
,将类型设置为“Basic”,并将值设置为Arrays.flatten(getFilteredGroups({"groupID1", "groupID2"}, "group.name", 100))
其中
{"groupId1", "groupId2"}
中的组 ID 是您想要映射到 Metabase 组的组。您可以在组页面的 URL 中找到 Okta 组 ID:https://your-okta-url.okta.com/admin/group/GROUP_ID
。此表达式将检索用户所属的 Okta 用户组的名称,并将它们作为数组返回。
您的 Okta 帐户必须启用
SAML_SUPPORT_ARRAY_ATTRIBUTES
,因为 Metabase 期望 Okta 将属性作为数组传递。如果您的 Okta 帐户较旧,您可能需要联系 Okta 支持部门以启用SAML_SUPPORT_ARRAY_ATTRIBUTES
。接下来,您需要告诉 Metabase 如何将 Okta 组映射到 Metabase 组。
- 在 Metabase SAML 设置中
- 启用同步组成员资格。
- 对于您添加到 Okta 用户的每个组,设置到 Metabase 组的新映射。
-
在组属性名称中,输入
MetabaseGroupName
(SAML 属性语句的名称)。
SAML 问题故障排除
有关常见问题,请转到SAML 故障排除。
延伸阅读
阅读其他Metabase 版本的文档。