基于SAML的身份验证
将你的单点登录(SSO)与Metabase集成,你可以:
- 当有人登录Metabase时,自动为其创建Metabase账户。
- 自动将用户属性从你的SSO传递到Metabase,以支持数据沙盒。
- 让用户无需重新身份验证即可访问Metabase。
确认你的Metabase管理员账户密码
在设置SAML之前,请确保你知道你的Metabase管理员账户密码。如果在设置过程中遇到任何问题,你可以通过登录屏幕上的“管理员备份登录”选项进行登录。
在Metabase中设置SAML与你的身份提供商(IdP)
一旦你确认了你的Metabase管理员账户密码,请前往管理面板的“设置”部分,然后点击“身份验证”选项卡。点击身份验证页面SAML部分中的“设置”按钮,你将看到此表单
该表单包含三个部分:
SAML指南
首先,你需要确保你的身份提供商(IdP)配置正确。每个IdP处理SAML设置的方式都不同。
我们为最常见的提供商编写了一些指南:
如果你在此处未看到你的IdP:
- 请参考你的IdP关于配置SAML的参考文档。你可能会找到类似此OneLogin SAML指南的内容。
- 使用Metabase SAML表单中的信息,填写你的IdP的SAML表单。
- 欲了解更多信息,请参阅下一节通用SAML配置。
用户配置
默认情况下,Metabase将为尚未拥有Metabase账户但能够通过SAML SSO登录的用户创建账户。
如果你已设置使用SCIM的用户配置,你可能需要关闭此设置,以避免Metabase自动为任何成功通过身份验证的用户创建新账户,因为你可能希望使用SCIM来决定谁可以在Metabase中创建账户以及谁不能。
通用SAML配置
Metabase中SAML表单的顶部包含你需要填写IdP的SAML表单所需的信息,并附有按钮方便复制。
Metabase SAML表单中的字段名称不一定与你的IdP使用的名称一致。我们在下面提供了每个字段的说明,以帮助你映射信息。
IdP应重定向回的URL
重定向URL是用户通过IdP登录后将被发送到的网址。要将用户重定向到你的Metabase,你的重定向URL应该是你的Metabase站点URL,并在末尾加上/auth/sso
。
例如,如果你的Metabase站点URL是https://metabase.yourcompany.com
,你将使用
https://metabase.yourcompany.com/auth/sso
作为IdP的SAML表单中的重定向URL。
不同的IdP对重定向URL使用不同的名称。以下是一些常见示例:
提供商 | 名称 |
---|---|
Auth0 | 应用程序回调URL |
Okta | 单点登录URL |
OneLogin | ACS(消费者)URL |
用户属性
Metabase将自动登录已通过你的SAML身份提供商验证的用户。为此,身份提供商SAML响应中返回的第一个断言必须包含每个用户的名字、姓氏和电子邮件属性。
大多数IdP默认已包含这些断言,但有些(例如Okta)必须配置才能包含它们。
通常,你需要将这些用户属性(名字、姓氏和电子邮件)粘贴到标有“名称”、“属性”或“参数”的字段中。
如果你允许用户编辑他们的电子邮件地址:请务必更新Metabase中相应的账户电子邮件。保持电子邮件地址同步将保护用户不会失去对其账户的访问权限。
签署SSO请求的设置(可选)
这些是你为签署SSO请求可以填写的额外设置,以确保它们不被篡改。
在Metabase中启用SAML身份验证
Metabase现在需要了解一些关于你的IdP的信息。以下是各项设置的详细说明:
SAML身份提供商URL
Metabase会将登录请求重定向到身份提供商URL,用户将在此处通过SSO登录。
不同的IdP对身份提供商URL使用不同的名称。以下是一些常见示例:
提供商 | 名称 |
---|---|
Auth0 | 身份提供商登录URL |
Okta | 身份提供商单点登录URL |
OneLogin | SAML 2.0端点 (HTTP) |
SAML身份提供商颁发者
SAML身份提供商颁发者是IdP的唯一标识符。你可能还会看到“颁发者”被称为“实体ID”。来自IdP的断言将包含此信息,Metabase将验证颁发者是否与你设置的值匹配。
我们建议你设置此值以提高SAML配置的安全性。
提供商 | 名称 |
---|---|
Auth0 | 身份提供商登录URL |
Okta | 身份提供商颁发者 |
OneLogin | 颁发者URL |
SAML身份提供商证书
SAML身份提供商证书是Metabase连接到IdP URI时将使用的编码证书。该证书看起来像一大块文本,你需要仔细复制粘贴——空格很重要!
你的IdP可能会让你下载此证书文件(通常是.cer
或.pem
),然后你需要用文本编辑器打开它,以便复制内容并粘贴到Metabase的框中。
请注意,你的证书文本可能包含页眉和页脚注释,例如-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
。将证书文本粘贴到Metabase时应包含这些注释。
提供商 | 名称 |
---|---|
Auth0 | 签名证书 |
Okta | X.509证书 |
OneLogin | X.509证书 |
签署SSO请求的设置(可选)
为了签署请求,使其不被篡改,你需要提供额外的设置。
如果你的身份提供商(IdP)加密SAML响应,你需要确保填写此部分。
如果你更改了这些设置中的任何一项(无论是在初始设置期间还是在编辑现有值之后),你都需要重新启动Metabase,因为密钥库文件的读取方式会受到影响。
- SAML密钥库路径: 用于签署SAML请求的密钥库文件的绝对路径。
- SAML密钥库密码: 打开密钥库的“魔法咒语”。
- SAML密钥库别名: Metabase用于签署SAML请求的密钥别名。
SAML单点注销 (SLO)
Metabase支持SAML的单点注销 (SLO)。
SLO的端点为:/auth/sso/handle_slo
因此,如果你的Metabase在metabase.example.com
上提供服务,注销服务POST绑定URL将是:
https://metabase.example.com/auth/sso/handle_slo
与你的身份提供商(IdP)同步组成员资格
此设置允许你根据IdP中用户的属性将用户分配到Metabase组。此设置可能与你的IdP提供的组功能不直接关联;你可能需要创建单独的用户属性来设置用户的Metabase组,例如metabaseGroups
。
首先,你需要创建一个SAML用户属性,用于指示该用户应属于哪些Metabase组。此创建的用户属性可以是XML字符串或XML字符串列表。不同的IdP有不同的处理方式,但你可能需要编辑你的用户配置文件或找到一种方法将用户的组映射到Metabase组名称列表。
在Metabase中配置组架构
在SAML提供商中完成所有设置后,你需要在Metabase中配置组架构。
- 打开“同步组成员资格”设置。
- 点击“编辑映射”。
- 点击“创建映射”。
- 输入你作为
metabaseGroups
属性值输入的其中一个组的名称,然后点击“添加”按钮。 - 点击
组
标题下方的下拉菜单,选择具有此特定metabaseGroups
值的用户应添加到的Metabase组。 - 点击“保存”。
- 之后,输入你在SAML提供商中添加的用户属性名称。在本例中,我们告知Okta
metabaseGroups
属性应命名为MetabaseGroupName
,因此我们将在Metabase的“组属性名称”字段中输入此名称。
使用SSO创建Metabase账户
付费计划按每个额外账户收费。
新的SSO登录将自动创建一个新的Metabase账户。
使用外部身份提供商登录创建的Metabase账户没有密码。使用IdP注册Metabase的用户必须继续使用该IdP登录Metabase。
禁用密码登录
避免将自己锁定在Metabase之外! 关闭密码登录适用于所有Metabase账户,包括你的Metabase管理员账户。在关闭密码登录之前,请确保你可以使用SSO登录你的管理员账户。
若要强制用户使用SSO登录,请从“管理员设置”>“身份验证”中禁用密码身份验证。关闭“启用密码身份验证”开关。
新账户通知电子邮件
当用户首次通过SSO登录Metabase时,Metabase将自动为他们创建一个账户,这将触发一封电子邮件通知Metabase管理员。如果你不希望发送这些通知,可以在身份验证页面底部将其关闭。
使用SAML的示例代码
你可以在SSO示例仓库中找到使用SAML身份验证的示例代码。
解决SAML问题
阅读其他Metabase版本的文档。