身份验证选项(SSO、Google OAuth、SAML)
快速导航
身份验证设置
身份验证选项通过 UI 和环境变量的组合进行配置。要更改 UI 中的设置,请访问设置 > 常规选项卡。
密码登录
默认情况下,Redash 使用电子邮件地址和密码对用户进行身份验证。这在设置 > 常规选项卡上称为密码登录。启用其他身份验证方法后,您可以禁用密码登录。
Redash 存储通过其默认密码配置创建的用户密码哈希值。用户首次通过 SAML 或 Google 登录进行身份验证时,会创建一个用户记录,但不存储密码哈希值。这称为即时 (JIT) 供应。这些用户只能通过第三方身份验证服务登录。
如果您使用密码登录,随后启用 Google OAuth 或 SAML 2.0,则一个电子邮件地址的用户可能有两个密码登录 Redash:他们的 Google 或 SAML 密码,以及他们原始的 Redash 密码。
如果所有用户都预期通过 Google OAuth 或 SAML 进行身份验证,我们建议禁用密码登录,因为它会减少混淆。
Google 登录 (OAuth)
您可以配置 Redash,允许任何拥有您指定的域的 Google 帐户的用户登录 Redash。如果他们还没有帐户,则会自动创建一个。
请按照以下步骤更改环境变量和 UI 设置,以启用 Google 登录
- 通过访问 云控制台,在您的 Google 组织中注册您的 Redash 实例。如果您尚未创建开发者项目,则必须创建一个。然后按照创建凭据流程进行操作。
- 将授权重定向 URL 设置为
http(s)://${REDASH_BASEURL}/oauth/google_callback
。 - 在设置过程中,您将获得一个客户端 ID 和一个客户端密钥。使用它们来设置
REDASH_GOOGLE_CLIENT_ID
和REDASH_GOOGLE_CLIENT_SECRET
环境变量。 - 重新启动您的 Redash 实例。
下面的第 5 步是可选的。截至第 4 步,只有拥有现有 Redash 帐户的访问者才能使用 Google 登录流程登录。与密码登录一样,没有帐户的访问者无法登录,除非他们收到管理员的邀请。
通过执行第 5 步,您可以配置 Redash 以允许来自指定域的任何用户登录。如果尚不存在帐户,则会自动为他们创建一个。
- 访问设置 > 常规。在允许的 Google Apps 域框中填写应该能够登录到您的 Redash 实例的域。
SAML 2.0
借助 pysaml
库,Redash 可以使用任何支持 SAML 2.0 协议的 IDP 对用户进行身份验证。
配置您的 IDP
您的 IDP 将需要一个回调 URL,用户在进行身份验证后将被重定向到该 URL。此 URL 将位于 /saml/callback?org_slug=<org_name>
。组织名称为 default
,除非您在设置 Redash 实例时更改了它。
此外,您应该映射用户字段 FirstName
、LastName
和 RedashGroups
(可选)。
Redash 使用 emailAddress 作为其 NameIDFormat。
RedashGroups
参数来配置 SAML 提供程序以传递用户应该加入的组。如果您使用 OneLogin 的预定义 Redash 应用程序,它将始终传递此参数,这意味着即使对于现有用户,它也会覆盖他们当前的组成员身份。因此,您需要确保它是最新的。配置 Redash
在设置 > 常规选项卡上,您可以指定是否启用 SAML,如果启用,则指定它是静态还是动态。有什么区别?
某些 IDP 提供元数据 URL 来配置 SAML 参数。Okta 将此方案称为“动态”配置。我们在此处借用了他们的术语。
但是,其他 IDP 不提供此元数据 URL,另一种方法是在客户端“静态”指定 SSO URL、实体 ID 和 x509 证书。
动态 SAML
下面显示了 Okta、Auth0 和自托管 SAML 的具体说明。
Redash 要求三个配置字段
- SAML 元数据 URL 是指向包含
pysaml
需要协商连接的元数据的 XML 文件的 URL。 - SAML 实体 ID 应该是您的 Redash 实例的 URL。
- SAML NameID 格式是您的 IDP 提供的 NameID 格式。您通常可以在元数据 .xml 文件中找到它
静态 SAML
静态配置需要以下字段
- SAML 单点登录 URL 是 IDP 上的 URL,用户在 Redash 中单击SAML 登录按钮时将被重定向到该 URL。
- SAML 实体 ID 应该是您的 Redash 实例的 URL。
- SAML x509 证书将由您的 IDP 提供。
自托管 SAML
- SAML 元数据 URL 应该指向您服务器上的 XML 文件,例如:
http://your-site.com/auth/realms/somerelm/protocol/saml/descriptor
- SAML 实体 ID 应该是:
redash
- SAML NameID 格式应该是:
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Okta
只需几分钟即可通过 SAML 2.0 协议使用 Okta 设置 Redash。首先在您的 Okta 控制面板中,单击按钮以添加新应用程序。选择 Web
作为平台。登录方法为 SAML 2.0
。在下一个屏幕上,Okta 有几个 URL 的字段
- 单点登录 URL
- 收件人 URL
- 目标 URL
- 受众 URI
您将在所有这些字段中使用相同的值。对于 SaaS 客户,URL 为:https://app.redash.io/org-slug/saml/callback
org-slug
替换为您组织的唯一 slug。如果您使用的是 Redash 的自托管版本,您需要使用 URL https://<您的自托管域名>/saml/callback?org_slug=default
填写完这些 URL 后,将 Name Id 格式设置为 EmailAddress
。应用程序用户名是 Email
。您还需要添加两个属性声明,然后保存更改。
名称 | 值 |
---|---|
FirstName | user.firstName |
LastName | user.lastName |
接下来,您需要将 Okta 的信息提供给 Redash。导航到 Redash 设置菜单下的 设置
选项卡。切换 启用 SAML
选项。将出现三个字段。对于 SAML 元数据 URL
,请在 Okta 设置的 Sign On(登录)选项卡下查找名为 “Identity Provider Metadata”(身份提供程序元数据)的链接,并将该链接粘贴到 Redash 中。此链接将指向 Okta 服务器上的 XML 文档。
要获取 SAML 实体 ID
,请单击 Okta 的 Sign On(登录)选项卡中的“View Setup Instructions”(查看设置说明)按钮。将“Identity Provider Single Sign-On URL”(身份提供程序单点登录 URL)粘贴到 Redash 的 SAML 实体 ID
字段中。
最后,在 Okta 的设置说明页面上查找“IDP metadata”(IDP 元数据)。“IDP metadata”是一段 XML 代码,其中包含一个名为 <md:NameIDFormat>
的键。将其内容粘贴到 Redash 的 SAML NameID 格式
框中。例如:urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
此屏幕上的更改将自动保存。现在您可以使用您的 Okta 凭据登录 Redash。
您现在可以使用 Okta SSO 登录 Redash。
使用 Okta 属性声明管理 Redash 组
请按照以下步骤配置 Okta,以便其传递 RedashGroups
属性。
- 在您的 Okta 控制面板中,在您之前添加 FirstName 和 LastName 的 SAML 设置中添加 RedashGroups,然后保存更改。
名称 | 值 |
---|---|
FirstName | user.firstName |
LastName | user.lastName |
RedashGroups | appuser.RedashGroups |
-
在管理控制台中,转到 Directory > Profile Editor(目录 > 配置文件编辑器),找到 redash 应用程序的用户配置文件。
-
在打开的 Attributes(属性)屏幕中,单击 Add Attribute(添加属性)。使用以下配置添加新属性
名称 | 值 |
---|---|
数据类型 | 字符串数组 |
变量名 | RedashGroups |
范围 | 用户个人 |
- 在 Applications(应用程序)页面上,单击 Assigments(分配)选项卡。现在您可以编辑用户分配,并为用户添加所需的 RedashGroups。
Auth0
- 创建一个传统的 Web 应用程序
- 在附加组件下,启用 SAML2
- 在 SAML2 配置中,设置回调 URL
- 对于 SaaS 客户,URL 为:
https://app.redash.io/org-slug/saml/callback
- 对于开源用户,URL 为:
https://[您的_REDASH_主机名]/saml/callback?org_slug=default
- 对于 SaaS 客户,URL 为:
- 在 SAML2 配置中使用以下设置 JSON
{
"mappings": {
"given_name": "FirstName",
"family_name": "LastName"
},
"passthroughClaimsWithNoMapping": false,
"includeAttributeNameFormat": false
}
在 Redash 中,使用以下配置
- SAML 元数据 URL:
https://[您的_租户_主机名]/samlp/metadata/[连接_ID]
- SAML 实体 ID:
urn:auth0:[您的_租户_名称]:[连接_名称]
- SAML NameID 格式:
EmailAddress
这些更改来自我们的用户论坛。
没有看到您的 IDP 吗?请考虑在 Github 上打开一个拉取请求,为本文档做出贡献。