管理员设置 - OpenID Connect 身份验证

公司使用不同的 OpenID Connect 提供商 (OP) 与 OpenID Connect(例如 Okta 或 OneLogin)协调。以下设置说明和 Looker 界面中使用的术语可能与 OP 中使用的术语并不直接匹配。

通过“管理”菜单的身份验证部分的 OpenID Connect 页面,您可以配置 Looker,以使用 OpenID Connect 协议对用户进行身份验证。本页面介绍了该流程,并说明了如何将 OpenID Connect 群组与 Looker 角色和权限相关联。

规划注意事项

  • 请考虑使用指定用户的备用登录选项,以允许 Looker 管理员在不使用 OpenID Connect 的情况下访问 Looker。
  • 如果您使用 OpenID Connect 登录 Looker,请勿停用 OpenID Connect 身份验证,除非您设置了备用账号登录。否则,您可能无法访问该应用。
  • Looker 可以使用来自当前电子邮件/密码设置、LDAP、SAML 或 Google Auth 的电子邮件地址将现有帐号迁移到 OpenID Connect。您可以在设置过程中对此进行配置。
  • Looker 仅支持使用 OpenID Connect 的授权代码流程进行 OpenID Connect 身份验证。不支持其他代码流。
  • OpenID Connect 规范包含可选的发现机制。Looker 不支持此机制,因此您必须在 OpenID Connect 身份验证设置部分提供明确的网址,如下文所述。

设置 OpenID Connect

如需设置 Looker 与 OpenID Connect 之间的连接,请执行以下任务:

  1. 将您的 Looker 网址提供给您的 OpenID Connect 提供商 (OP)
  2. 从 OP 获取所需信息

在 OP 上设置 Looker

您的 OpenID Connect 提供商 (OP) 将需要您的 Looker 实例的网址。您的 OP 可能会将它称为“重定向 URI”或“登录重定向 URI”以及其他名称。在您的 OP 网站上,向您的 OP 提供您通常在浏览器中访问 Looker 实例的网址,后跟 /openidconnect。例如 https://instance_name.looker.com/openidconnect

从 OP 获取信息

如需为 OpenID Connect 身份验证配置 Looker,您需要提供 OP 中的以下信息:

  • 客户端标识符和客户端密钥。当您按上述方式配置重定向 URI 时,它们通常由 OP 网站上的说明提供。
  • 在 OpenID Connect 身份验证过程中,Looker 会连接到三个不同的端点:一个身份验证端点、一个 ID 令牌端点和一个用户信息端点。您需要操作设备为其中每个端点使用的网址。
  • 每个 OP 都会以集合(称为“范围”)提供用户信息。您需要知道您的 OP 使用的范围的名称。OpenID Connect 需要 openid 范围,但您的 OP 可能会包含其他范围,例如 emailprofilegroups
  • 在 OpenID Connect 中,存储用户数据的属性称为声明。您需要知道您的 OP 会将哪些声明传递到 Looker,以便在 Looker 实例中提供所需的用户信息。Looker 要求声明包含电子邮件地址和姓名信息,但如果您有任何其他用户属性(例如时区或部门),则 Looker 还需要确定哪些声明包含这些信息。声明可以包含在来自用户信息端点或 ID 令牌端点的响应中。Looker 可以将任一端点返回的声明映射到 Looker 用户属性。

许多 OP 都以发现文档的形式提供了有关配置 OpenID Connect 的信息,可让您收集为 OpenID Connect 配置 Looker 所需的部分或全部信息。如果您无权访问发现文档,则需要从 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 实例独有的客户端标识符。此名称应由您的 OP 提供。

密钥:您的 Looker 实例独有的客户端密钥。此名称应由您的 OP 提供。

颁发者:用于标识 OP 的安全网址。

受众群体:向您的 OP 表明谁的标识符。这通常与 Identifier 值相同,但可能会是不同的值。

授权网址:身份验证序列开始的 OP 网址。通常在发现文档中称为 authorization_endpoint

令牌网址:Looker 获得授权后用于检索 OAuth 令牌的网址。通常在发现文档中称为 token_endpoint

用户信息网址:Looker 将在其中检索详细用户信息的网址。通常在发现文档中称为 userinfo_endpoint

范围:OP 用于向 Looker 提供用户信息的范围的逗号分隔列表。您必须添加 openid 范围以及包含 Looker 所需信息的任何范围,其中包括电子邮件地址、用户名以及在 Looker 实例上配置的任何用户属性。

配置用户属性设置

在本部分中,您需要将 OP 的声明映射到 Looker 用户属性

用户属性设置部分,输入包含各字段对应信息的 OP 声明的名称。这会告知 Looker 如何在登录时将这些声明映射到 Looker 用户信息。Looker 并不讲究声明的构建方式,重要的是,此处输入的声明信息与您在 OP 中定义声明的方式一致。

标准版权声明

Looker 要求使用用户名和电子邮件地址信息进行用户身份验证。请在此部分中输入您的 OP 的相应声明信息:

电子邮件声明:您的 OP 针对用户电子邮件地址(例如 email)使用的声明。

名字声明:您的 OP 用于对用户名字的声明,例如 given_name

姓氏声明:您的 OP 用于对用户姓氏的声明,例如 family_name

请注意,某些 OP 对姓名使用单个声明,而不是将名字和姓氏分开。如果您的 OP 就是这种情况,请在 First Name ClaimLast Name Claim 字段中输入存储名称的声明。对于每位用户,Looker 都会将第一个空格之前的所有内容作为名字,使用之后的所有内容作为姓氏。

特性配对

(可选)当用户登录时,您可以使用 OpenID Connect 声明中的数据自动填充 Looker 用户属性中的值。例如,如果您已将 OpenID Connect 配置为与您的数据库建立特定于用户的连接,则可以将 OpenID Connect 声明与 Looker 用户属性配对,以便在 Looker 中建立特定于用户的数据库连接

如需将声明与相应的 Looker 用户属性配对,请执行以下操作:

  1. Claim 字段中输入您的 OP 标识的声明,并在 Looker 用户属性字段中输入要与它配对的 Looker 用户属性。
  2. 如果您希望该声明字段中缺少某个值的用户帐号禁止登录,请选中必填
  3. 点击 +,然后重复这些步骤以添加更多声明和属性对。

请注意,某些 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 群组和用户。这样,您就可以在一个位置集中管理 Looker 等多种软件即服务 (SaaS) 工具的群组成员资格。

如果您启用 Mirror OpenID Connect Groups 镜像,那么 Looker 将为系统引入的每个 OpenID Connect 群组创建一个 Looker 群组。这些 Looker 群组可在 Looker 的管理部分的群组页面上查看。群组可用于为群组成员分配角色、设置内容访问权限控制和分配用户属性

默认群组和角色

默认情况下,镜像 OpenID Connect Groups 开关处于关闭状态。在这种情况下,您可以为 OpenID Connect 新用户设置默认群组。在 New User Groups(新用户群组)和 New User Roles(新用户角色)字段中,输入您希望在新的 Looker 用户首次登录 Looker 时向其分配的任何 Looker 群组或角色的名称:

这些群组和角色会在新用户首次登录时为其应用。不适用于先前存在的用户,如果在用户首次登录后将其从用户中移除,也不会重新应用。

如果您以后启用镜像 OpenID Connect 群组,则当用户下次登录时,系统会移除这些默认设置,并将其替换为镜像 OpenID Connect Groups 部分分配的角色。这些默认选项将不再可用或会被分配,并会被镜像群组配置完全取代。

启用 OpenID Connect 群组镜像

如需在 Looker 中镜像 OpenID Connect 群组,请开启 Mirror OpenID Connect Groups 开关:

群组声明:输入您的 OP 用来存储群组名称的声明。Looker 会为通过群组声明引入系统的每个 OpenID Connect 群组创建一个 Looker 群组。您可以在 Looker 的管理部分的群组页面上查看这些 Looker 群组。群组可用于设置内容访问权限控制和分配用户属性

首选群组名称 / 角色 / OpenID Connect 群组名称:通过这组字段,您可以分配自定义群组名称以及一个或多个角色,这些角色会分配给 Looker 中的相应 OpenID Connect 群组:

  1. OpenID Connect Group Name 字段中输入 OpenID Connect 群组名称。OpenID Connect 群组中包含的 OpenID Connect 用户将被添加到 Looker 内的镜像群组中。

  2. 自定义名称字段中,为镜像群组输入自定义名称。此名称将显示在 Looker 的管理部分的群组页面中。

  3. Custom Name(自定义名称)字段右侧的字段中,选择将分配给群组中每位用户的一个或多个 Looker 角色

  4. 点击 + 可添加其他字段集,以配置其他镜像群组。如果您配置了多个群组,并希望移除其中某个群组的配置,请点击该群组的字段组旁边的 X

如果您修改之前在此屏幕中配置的镜像群组,群组的配置将会更改,但群组本身将保持不变。例如,您可以更改群组的自定义名称,这会更改群组在 Looker 群组页面中的显示方式,但不会更改分配的角色和群组成员。更改 OpenID Connect 群组 ID 会保留群组名称和角色,但系统会根据具有新 OpenID Connect 群组 ID 的外部 OpenID Connect 群组的成员来重新分配群组成员。

如果您在此页面中删除了群组,则该群组将不再在 Looker 中镜像,并且其成员在 Looker 中将不再拥有通过该群组分配给他们的角色。

对镜像群组所做的任何修改都将应用于该群组的用户下次登录 Looker 时。

高级角色管理

如果您启用了镜像 OpenID Connect Groups 开关,则 Looker 会显示这些设置。本部分的选项决定了 Looker 管理员在配置 Looker 群组以及从 OpenID Connect 镜像的用户时所能拥有的灵活性。

例如,如果您希望 Looker 群组和用户配置与 OpenID Connect 配置严格匹配,请启用这些选项。当前三个选项全部启用后,Looker 管理员将无法修改镜像群组的成员资格,只能通过 OpenID Connect 镜像群组为用户分配角色。

如果您希望更灵活地在 Looker 中进一步自定义群组,请停用这些选项。您的 Looker 群组仍会反映您的 OpenID Connect 配置,但您可以在 Looker 中执行额外的群组和用户管理,例如将 OpenID Connect 用户添加到 Looker 特定的群组,或直接将 Looker 角色分配给 OpenID Connect 用户。

对于新的 Looker 实例或之前没有配置镜像组的实例,这些选项默认处于停用状态。

对于当前已配置镜像群组的现有 Looker 实例,这些选项默认处于启用状态。

启用限制性更强的设置将导致用户失去群组成员资格或失去直接在 Looker 中配置的已分配角色。这些用户下次登录 Looker 时会执行此操作。

高级角色管理部分包含以下选项:

阻止个人 OpenID Connect 用户接收直接角色:启用此选项可阻止 Looker 管理员直接为 OpenID Connect 用户分配 Looker 角色。OpenID Connect 用户只能通过其组成员资格获得角色。如果 OpenID Connect 用户被允许成为原生(非镜像)Looker 群组的成员,他们仍然可以从镜像的 OpenID Connect 群组和原生 Looker 群组继承角色。之前直接分配了角色的所有 OpenID Connect 用户在下次登录时都会删除这些角色。

如果此选项处于关闭状态,Looker 管理员可以将 Looker 角色直接分配给 OpenID Connect 用户,就像他们是在 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 群组的角色。

身份验证需要角色:如果启用此选项,必须为 OpenID Connect 用户分配角色。任何未被分配角色的 OpenID Connect 用户将无法登录 Looker。

如果停用此选项,则即使未分配任何角色,OpenID Connect 用户也可以向 Looker 进行身份验证。未分配角色的用户将无法在 Looker 中查看任何数据或执行任何操作,但可以登录 Looker。

停用镜像 OpenID Connect 群组

如果您想停止在 Looker 中镜像 OpenID Connect 群组,请关闭 Mirror OpenID Connect Groups 开关。系统将删除所有空的镜像 OpenID Connect 群组。

非空镜像 OpenID Connect 群组仍可用于内容管理和角色创建。但是,您无法将用户添加到镜像 OpenID Connect 群组或从中移除用户。

配置迁移选项

如本部分所述,Looker 建议您启用备用登录,并为现有用户提供合并策略。

指定用户的备用登录信息

启用 OpenID Connect 身份验证后,对于普通用户,Looker 电子邮件/密码登录始终处于停用状态。指定用户的备用登录方式选项可为管理员和具有 login_special_email 权限的指定用户启用使用 /login/email 的基于电子邮件的备用登录方式。

如果日后出现 OpenID Connect 配置问题,或者您需要支持某些在您的 OpenID Connect 目录中没有帐号的用户,开启此设置非常实用。

如需使用 Looker API 启用备用登录,请参阅启用备用登录选项文档页面。

指定用于将 OpenID Connect 用户合并到 Looker 账号的方法

使用以下方式合并用户字段中,指定将首次 Open ID Connect 登录与现有用户帐号合并时所用的方法。您可以合并以下系统中的用户:

  • Looker 电子邮件地址/密码(不适用于 Looker (Google Cloud Core))
  • Google
  • 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:在选择合并选项之前,已完成以下两个步骤:

    1. 在 Google Cloud 中使用 Cloud Identity联合用户身份。
    2. OAuth 身份验证设置为联合用户的备用身份验证方法。

如果该设置不符合这两个条件中的任一条件,则用户合并选项将无法使用。

进行合并时,Looker 会搜索具有相同电子邮件地址的用户记录。

测试用户身份验证

指定此配置时,请点击 Test 按钮以测试 OpenID Connect 配置。

仔细阅读测试结果;有些部分测试失败,即使其他部分失败,测试也可能会成功。

测试将重定向到端点,并打开新的浏览器标签页。该标签页会显示以下内容:

  • Looker 是否能够与各个端点通信并验证
  • 身份验证端点响应的跟踪记录
  • Looker 从用户信息端点获取的用户信息
  • 收到的 ID 令牌的解码版本和原始版本

您可以使用此测试来验证从各个端点接收的信息是否正确,以及排查任何错误。

提示

  • 即使 OpenID Connect 已部分配置,您也可以随时运行此测试。在配置期间运行测试有助于了解有哪些参数需要配置。
  • 该测试会使用在 OpenID Connect 身份验证页面上输入的设置,即使这些设置尚未保存也是如此。测试不会影响或更改该页面上的任何设置。

保存并应用设置

请务必先测试您的配置,并仔细阅读测试结果,以验证测试的所有部分是否都成功完成。如果保存错误的 OpenID Connect 配置信息,可能会导致您和其他人无法访问 Looker。

输入您的信息并且所有测试均通过后,请选中我已确认上述配置,并希望在全局范围内应用该配置,然后点击 Update Settings(更新设置)进行保存。