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设置的属性声明(可选)部分,创建以下属性声明
- 电子邮件地址
- 名字(给定名字)
- 姓氏(姓氏)
尽管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应用集成的页面。
- 转到登录选项卡。
- 点击查看SAML设置说明。
使用Okta SAML说明中的信息填写在管理员面板 > 身份验证 > SAML中的Metabase SAML表单
Metabase SAML | Okta SAML |
---|---|
SAML身份提供者URL | 身份提供者单点登录URL |
SAML身份提供者证书 | X.509证书* |
SAML身份提供者发行者 | 身份提供者发行者 |
*请确保包含任何头部和尾部注释,如---BEGIN CERTIFICATE---
和---END CERTIFICATE---
。
配置组映射
您可以为Metabase配置自动将人们在登录时分配到Metabase组。您需要创建一个SAML属性声明,该声明将组信息传递给Metabase,然后配置Metabase以读取此属性并将其内容映射到Metabase组。
您可以使用以下任一选项
使用用户配置文件属性分配组
您可以创建一个自定义用户配置文件属性,并为其填充每个用户的Metabase组。
- 在Okta 配置文件编辑器中,创建一个名为
metabaseGroups
的新用户配置文件属性,它可以是字符串
或字符串数组
。请参阅创建新用户配置文件属性的说明。 -
为Okta中的每个用户,在
metabaseGroups
属性中填写他们的Metabase组。我们建议您在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用户。
-
在Okta的Metabase应用程序集成的SAML设置中,添加一个新属性声明
MetabaseGroupName
,设置类型为“基本”,并将值设置为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其他版本的文档。