公司使用不同的 OpenID Connect 提供方 (OP) 与 OpenID Connect 协调(例如 Okta 或 OneLogin)。以下设置说明和 Looker 界面中使用的术语可能与您的运营商使用的术语不完全一致。
在“管理”菜单的身份验证部分中,您可以使用 OpenID Connect 页面配置 Looker 以使用 OpenID Connect 协议对用户进行身份验证。本页介绍了该流程,并包含将 OpenID Connect 群组与 Looker 角色和权限相关联的说明。
使用要求
只有在满足以下条件时,Looker 才会在管理菜单的身份验证部分中显示 OpenID Connect 页面:
- 您拥有管理员角色。
- 您的 Looker 实例已启用 OpenID Connect。
如果您满足上述条件,但没有看到 OpenID Connect 页面,请提交支持请求,以便在您的实例中启用 OpenID Connect。
规划时的注意事项
- 考虑使用为指定用户设置备用登录方式选项,让 Looker 管理员无需 OpenID Connect 即可访问 Looker。
- 在使用 OpenID Connect 登录 Looker 时,请勿停用 OpenID Connect 身份验证,除非您已设置备用账号登录。否则,您可能会被锁定在应用之外。
- Looker 可以使用来自当前电子邮件和密码设置、LDAP、SAML 或 Google 身份验证的电子邮件地址将现有账号迁移到 OpenID Connect。您可以在设置过程中进行配置。
- Looker 仅支持使用 OpenID Connect 的授权代码流程进行 OpenID Connect 身份验证。不支持其他代码流程。
- OpenID Connect 规范包含一个可选的发现机制。Looker 不支持此机制,因此您必须在 OpenID Connect 身份验证设置部分中提供明确的网址,如配置 OpenID Connect 身份验证设置中所述。
设置 OpenID Connect
如需在 Looker 和 OpenID Connect 之间设置连接,请执行以下任务:
在操作平台上设置 Looker
您的 OpenID Connect 提供方 (OP) 需要您的 Looker 实例的网址。您的 OP 可能会将其称为重定向 URI、登录重定向 URI 等。在您的运营商网站上,向运营商提供您通常在浏览器中访问 Looker 实例的网址,后跟 /openidconnect
。例如 https://instance_name.looker.com/openidconnect
。
从您的运营商获取信息
如需将 Looker 配置为使用 OpenID Connect 身份验证,您需要从您的 OP 获取以下信息:
- 客户端标识符和客户端密钥。在您配置重定向 URI 时,这些值通常由 OP 在其网站上提供。
- 在 OpenID Connect 身份验证过程中,Looker 将连接到三个不同的端点:身份验证端点、ID 令牌端点和用户信息端点。您需要获取您的 OP 为这些端点使用的网址。
- 每个操作都会以称为镜重的集合形式提供用户信息。您需要知道您的 OP 使用的镜的名称。OpenID Connect 需要
openid
范围,但您的 OP 可能还包含其他范围,例如email
、profile
和groups
。 - 在 OpenID Connect 中,用于存储用户数据的属性称为声明。您需要知道您的 OP 向 Looker 传递了哪些声明,以便在 Looker 实例中提供您需要的用户信息。Looker 需要包含电子邮件地址和姓名信息的声明,但如果您有任何其他用户属性(例如时区或部门),Looker 还需要确定哪些声明包含这些信息。声明可包含在用户信息端点或 ID 令牌端点的响应中。Looker 可以将任一端点返回的声明映射到 Looker 用户属性。
许多 OP 会以发现文档的形式提供有关配置 OpenID Connect 的信息,以便您收集配置 Looker 以使用 OpenID Connect 所需的部分或全部信息。如果您无权访问发现文档,则需要从您的 OP 或内部身份验证团队获取必要信息。
以下部分摘自发现文档示例:
{ "issuer": "https://accounts.google.com", "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth", "token_endpoint": "https://www.googleapis.com/oauth2/v4/token", "userinfo_endpoint": "https://www.googleapis.com/oauth2/v3/userinfo", "revocation_endpoint": "https://accounts.google.com/o/oauth2/revoke", "jwks_uri": "https://www.googleapis.com/oauth2/v3/certs", "response_types_supported": [ "code", "token", "id_token", "code token" "code id_token", "token id_token", "code token id_token", "none" ], "subject_types_supported": [ "public" ], "id_token_signing_alg_values_supported": [ "RS256" ], "scopes_supported": [ "openid", "email", "profile" ], "token_endpoint_auth_methods_supported": [ "client_secret_post", "client_secret_basic" ], "claims_supported": [ "aud", "email", "email_verified", "exp", "family_name", "given_name", "iat", "iss", "locale", "name", "picture", "sub" ],
配置 OpenID Connect 身份验证设置
使用您从 OP 的发现文档、OP 或内部身份验证团队获取的配置信息,在以下字段中输入关联设置:
标识符:Looker 实例专有的客户端标识符。此信息应由您的原始发布商提供。
Secret:Looker 实例专有的客户端密钥。此信息应由您的原始发布商提供。
发行者:用于标识您的 OP 的安全网址。
受众群体:向您的操作者指明客户是谁的标识符。此值通常与标识符值相同,但也可能不同。
授权网址:身份验证序列开始的 OP 的网址。在发现文档中通常称为 authorization_endpoint
。
令牌网址:Looker 在获得授权后检索 OAuth 令牌的网址。在发现文档中通常称为 token_endpoint
。
用户信息网址:Looker 将从中检索详细用户信息的网址。在发现文档中通常称为 userinfo_endpoint
。
范围:以英文逗号分隔的范围列表,供原始方 (OP) 使用,以向 Looker 提供用户信息。您必须添加 openid
权限范围以及包含 Looker 所需信息的任何权限范围,包括电子邮件地址、用户名以及在 Looker 实例上配置的任何用户属性。
配置用户属性设置
在本部分中,您将操作者的声明映射到 Looker 的用户属性。
在用户属性设置部分,输入您的 OP 声明的名称,其中包含每个字段的相应信息。这会告知 Looker 如何在登录时将这些声明映射到 Looker 用户信息。Looker 对断言的构建方式没有特别要求,重要的是,此处输入的断言信息应与 OP 中定义断言的方式一致。
标准声明
Looker 需要用户名和电子邮件信息来进行用户身份验证。在此部分中输入您的 OP 对应的退款信息:
电子邮件声明:您的 OP 用于用户电子邮件地址(例如 email
)的声明。
名字声明:您的 Opper 用于用户名字的声明,例如 given_name
。
姓氏声明:您的 Opper 用于用户姓氏的声明,例如 family_name
。
请注意,有些运营商会使用单个声明来表示姓名,而不是将名字和姓氏分开。如果您的操作系统是这种情况,请在名字声明和姓氏声明字段中输入用于存储姓名的声明。对于每位用户,Looker 会将第一个空格之前的内容用作名字,将其余内容用作姓氏。
属性配对
您可以选择使用 OpenID Connect 声明中的数据,在用户登录时自动填充 Looker 用户属性中的值。例如,如果您已配置 OpenID Connect 以建立特定于用户的数据库连接,则可以将 OpenID Connect 声明与 Looker 用户属性配对,以便在 Looker 中使数据库连接因用户而异。
如需将声明与相应的 Looker 用户属性配对,请执行以下操作:
- 在声明字段中输入您的 OP 标识的声明,并在 Looker 用户属性字段中输入要与其配对的 Looker 用户属性。
- 如果您想禁止任何用户账号在该声明字段中缺少值时登录,请选中必填。
- 点击 +,然后重复上述步骤以添加更多声明和属性对。
请注意,某些 OP 可能包含“嵌套”声明。例如:
"zoneinfo": "America/Los Angeles",
"phone_number": "555-1235",
"address": {
"street_address": "1234 Main Street",
"locality": "Anyton",
"region": "IL",
"postal_code": "60609",
"country": "US"
},
在前面的示例中,locality
声明嵌套在 address
声明中。对于嵌套声明,请指定父级声明和嵌套声明,并以正斜杠 ( /
) 字符分隔。如需针对示例中的 locality
声明配置 Looker,您应输入 address/locality
。
群组和角色
您可以选择让 Looker 创建镜像外部管理的 OpenID Connect 群组的群组,然后根据用户的镜像 OpenID Connect 群组向用户分配 Looker 角色。当您更改 OpenID Connect 群组成员资格时,这些更改会自动传播到 Looker 的群组配置
通过镜像 OpenID Connect 群组,您可以使用外部定义的 OpenID Connect 目录来管理 Looker 群组和用户。这样,您就可以在一个位置管理多个软件即服务 (SaaS) 工具(例如 Looker)的群组成员资格。
如果您开启镜像 OpenID Connect 群组,Looker 会为引入到系统中的每个 OpenID Connect 群组创建一个 Looker 群组。您可以在 Looker 的管理部分的群组页面上查看这些 Looker 群组。群组可用于向群组成员分配角色、设置内容访问权限控制和分配用户属性。
默认群组和角色
默认情况下,镜像 OpenID Connect 群组开关处于关闭状态。在这种情况下,您可以为新的 OpenID Connect 用户设置默认群组。在新用户群组和新用户角色字段中,输入您希望在新的 Looker 用户首次登录 Looker 时为其分配的任何 Looker 群组或角色的名称:
这些群组和角色会在新用户首次登录时应用于他们。这些设置不会应用于现有用户,并且如果在用户首次登录后移除这些设置,系统也不会重新应用这些设置。
启用镜像 OpenID Connect 群组
如需在 Looker 中镜像 OpenID Connect 群组,请开启镜像 OpenID Connect 群组开关:
群组声明:输入您的 OP 用于存储群组名称的声明。Looker 会为通过“群组”声明引入到系统中的每个 OpenID Connect 群组创建一个 Looker 群组。您可以在 Looker 的管理部分的群组页面上查看这些 Looker 群组。群组可用于设置内容访问权限控制和分配用户属性。
首选群组名称 / 角色 / OpenID Connect 群组名称:借助这组字段,您可以为 Looker 中的相应 OpenID Connect 群组分配自定义群组名称和一个或多个角色:
在 OpenID Connect 组名称字段中输入 OpenID Connect 组名称。属于 OpenID Connect 群组的 OpenID Connect 用户将被添加到 Looker 中的镜像群组。
在自定义名称字段中,为镜像组输入自定义名称。此名称将显示在 Looker 管理部分的群组页面中。
在自定义名称字段右侧的字段中,选择要分配给群组中每个用户的一个或多个 Looker 角色。
点击
+
可添加其他组字段,以配置其他镜像组。如果您配置了多个群组,并想移除某个群组的配置,请点击该群组的一组字段旁边的X
。
如果您修改在此屏幕中之前配置的镜像组,该组的配置将会发生变化,但该组本身将保持不变。例如,您可以更改群组的自定义名称,这会更改群组在 Looker 的群组页面中的显示方式,但不会更改分配的角色和群组成员。更改 OpenID Connect 群组 ID 会保留群组名称和角色,但系统会根据具有新 OpenID Connect 群组 ID 的外部 OpenID Connect 群组的成员重新分配群组成员。
如果您在此页面中删除某个群组,该群组将不再在 Looker 中镜像,其成员将不再拥有通过该群组在 Looker 中分配给他们的角色。
对镜像群组所做的任何修改都会在该群组的用户下次登录 Looker 时应用于他们。
高级角色管理
如果您已启用镜像 OpenID Connect 群组开关,Looker 会显示这些设置。本部分中的选项决定了 Looker 管理员在配置从 OpenID Connect 镜像的 Looker 群组和用户时可以有多大的灵活性。
例如,如果您希望 Looker 群组和用户配置与您的 OpenID Connect 配置完全匹配,请启用这些选项。启用前三项选项后,Looker 管理员无法修改镜像群组的成员资格,只能通过 OpenID Connect 镜像群组向用户分配角色。
如果您希望在 Looker 中更灵活地进一步自定义组,请停用这些选项。您的 Looker 群组仍会反映您的 OpenID Connect 配置,但您可以在 Looker 中执行其他群组和用户管理操作,例如将 OpenID Connect 用户添加到 Looker 专用群组,或直接向 OpenID Connect 用户分配 Looker 角色。
对于新的 Looker 实例或之前未配置镜像组的实例,这些选项默认处于关闭状态。
对于已配置镜像群组的现有 Looker 实例,这些选项默认处于开启状态。
高级角色管理部分包含以下选项:
阻止个别 OpenID Connect 用户获得直接角色:启用此选项可阻止 Looker 管理员直接向 OpenID Connect 用户分配 Looker 角色。OpenID Connect 用户将只能通过其群组成员资格接收角色。如果允许 OpenID Connect 用户加入内置(非镜像)Looker 群组,他们仍然可以继承镜像 OpenID Connect 群组和内置 Looker 群组中的角色。之前直接分配了角色的所有 OpenID Connect 用户在下次登录时,这些角色将被移除。
如果此选项处于关闭状态,Looker 管理员可以直接向 OpenID Connect 用户分配 Looker 角色,就像他们是直接在 Looker 中配置的用户一样。
禁止直接加入非 OpenID Connect 群组:启用此选项后,Looker 管理员将无法直接将 OpenID Connect 用户添加到内置 Looker 群组。如果允许镜像的 OpenID Connect 群组成为内置 Looker 群组的成员,OpenID Connect 用户可以保留对任何父级 Looker 群组的成员资格。之前分配到内置 Looker 组的所有 OpenID Connect 用户在下次登录时都会从这些组中移除。
如果此选项处于关闭状态,Looker 管理员可以直接将 OpenID Connect 用户添加到内置 Looker 群组。
阻止从非 OpenID Connect 群组继承角色:启用此选项可阻止镜像的 OpenID Connect 群组成员从内置 Looker 群组继承角色。任何之前从父级 Looker 群组继承角色的 OpenID Connect 用户在下次登录时都会失去这些角色。
如果此选项处于关闭状态,则添加为内置 Looker 群组成员的镜像 OpenID Connect 群组或 OpenID Connect 用户将继承分配给父级 Looker 群组的角色。
Auth Requires Role:如果此选项处于开启状态,则必须为 OpenID Connect 用户分配角色。任何未分配角色的 OpenID Connect 用户都将无法登录 Looker。
如果此选项处于关闭状态,OpenID Connect 用户即使没有分配角色,也可以对 Looker 进行身份验证。没有分配角色的用户将无法在 Looker 中查看任何数据或执行任何操作,但可以登录 Looker。
停用镜像 OpenID Connect 群组
如果您想停止在 Looker 中镜像 OpenID Connect 群组,请关闭镜像 OpenID Connect 群组开关。所有空的镜像 OpenID Connect 群组都将被删除。
非空镜像 OpenID Connect 群组仍可用于内容管理和角色创建。不过,您无法将用户添加到镜像 OpenID Connect 群组或从中移除用户。
配置迁移选项
如本部分所述,Looker 建议您启用备选登录方式,并为现有用户提供合并策略。
为指定用户设置备用登录方式
启用 OpenID Connect 身份验证后,系统会始终为普通用户停用 Looker 电子邮件和密码登录方式。为指定用户启用备用登录方式选项可为管理员和具有 login_special_email
权限的指定用户启用基于电子邮件的备用登录方式(使用 /login/email
)。
如果日后发生 OpenID Connect 配置问题,或者您需要为在 OpenID Connect 目录中没有账号的用户提供支持,启用此选项非常有用,可在 OpenID Connect 设置期间作为后备选项。
指定用于将 OpenID Connect 用户合并到 Looker 账号的方法
在使用以下方法合并用户字段中,指定用于将首次 Open ID Connect 登录合并到现有用户账号的方法。您可以合并来自以下系统的用户:
- Looker 电子邮件地址/密码(不适用于 Looker (Google Cloud Core))
- LDAP(不适用于 Looker (Google Cloud Core))
- SAML
如果您有多个身份验证系统,可以在此字段中指定要合并的多个系统。Looker 会按指定的顺序从列出的系统中查找用户。例如,假设您使用 Looker 电子邮件地址/密码创建了一些用户,然后启用了 LDAP,现在您想使用 OpenID Connect。在前面的示例中,Looker 会先按电子邮件地址和密码合并,然后再按 LDAP 合并。
当用户首次使用 OpenID Connect 登录时,此选项会通过查找电子邮件地址匹配的账号,将用户关联到其现有账号。如果用户没有现有账号,系统会创建一个新用户账号。
使用 Looker (Google Cloud Core) 时合并用户
当您使用 Looker (Google Cloud Core) 和 OpenID Connect 时,合并会按上一部分所述的方式进行。不过,只有在满足以下两个条件之一时,才有可能实现:
- 条件 1:用户通过 OpenID Connect 协议使用其 Google 身份对 Looker (Google Cloud Core) 进行身份验证。
条件 2:在选择合并选项之前,您已完成以下两个步骤:
- 使用 Cloud Identity 在 Google Cloud 中管理联合用户身份。
- 使用联合用户将 OAuth 身份验证设置为备用身份验证方法。
如果设置不满足这两个条件中的任一条件,使用以下用户名合并选项将不可用。
合并时,Looker 会搜索具有完全相同电子邮件地址的用户记录。
测试用户身份验证
指定此配置时,请点击 Test 按钮以测试您的 OpenID Connect 配置。
测试将重定向到端点,并打开一个新的浏览器标签页。该标签页会显示以下内容:
- Looker 是否能够与各种端点通信并进行验证
- 身份验证端点响应的轨迹
- Looker 从用户信息端点获取的用户信息
- 收到的 ID 令牌的解码版本和原始版本
您可以使用此测试来验证从各种端点收到的信息是否正确,并排查任何错误。
提示:
- 您可以随时运行此测试,即使 OpenID Connect 仅部分配置也是如此。在配置期间,运行测试有助于了解哪些参数需要配置。
- 测试会使用您在 OpenID Connect 身份验证页面上输入的设置,即使这些设置尚未保存也是如此。测试不会影响或更改该页面上的任何设置。
保存并应用设置
输入完信息且所有测试均通过后,选中我已确认上述配置,并希望启用其在全球范围内的应用,然后点击更新设置进行保存。