OpenID Connect 身份验证

如果您的 Looker 实例是在 Looker 22.10 之后创建的,默认情况下,管理菜单的身份验证部分会显示 OpenID Connect 页面。

如果您在管理菜单的身份验证部分未看到 OpenID Connect 页面,请在 Looker 的帮助中心内打开支持请求,然后点击与我们联系

公司使用不同的 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 Auth 设置部分提供露骨网址(如下文所述)。

设置 OpenID Connect

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

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

在 OP 上设置 Looker

您的 OpenID Connect 提供商 (OP) 将需要您的 Looker 实例的网址。您的 OP 可能会将其称为 Redirect URILogin Redirect 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 范围,但您的操作可能会包含其他范围,例如 emailprofilegroups
  • 在 OpenID Connect 中,存储用户数据的属性称为声明。您需要知道您的操作会将哪些声明传递给 Looker,以便在 Looker 实例上提供您想要的用户信息。Looker 要求包含电子邮件地址和姓名信息的声明,但如果您有任何其他用户属性(例如时区或部门),Looker 还需要确定哪些声明包含该信息。声明可包含在用户信息端点或 ID 令牌端点的响应中。Looker 可以将任一端点返回的声明映射到 Looker 用户属性。

许多 OP 以发现文档的形式提供配置 OpenID Connect 的相关信息,让您可以收集为 OpenID Connect 配置 Looker 所需的部分或全部信息。如果您无权访问发现文档,则需要从 OP 或内部身份验证团队获取必要信息。

例如,下面是 Google 提供的示例发现文档的一部分:

配置 OpenID Connect 身份验证设置

使用从 OP 的发现文档、您的 OP 或内部身份验证团队获取的配置信息,在以下字段中输入连接设置:

标识符:您的 Looker 实例独有的客户端标识符。此操作应由 OP 提供。

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

Issuer(颁发者):标识您的 OP 的安全网址。

Audience:一个标识符,用于向 OP 表明客户端的身份。它通常与 Identifier 的值相同,但可以是一个不同的值。

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

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

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

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

配置用户属性设置

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

用户属性设置部分,输入 OP' 声明的名称,其中包含每个字段的相应信息。这会告知 Looker 如何在登录时将这些声明映射到 Looker 用户信息。Looker 并不特别重视如何构建版权主张,重要的是这里输入的版权主张信息与您在 OP 中定义版权主张的方式一致。

标准版权主张

Looker 要求提供用户名和电子邮件地址信息以用于用户身份验证。在此部分中,输入您的 OP' 对应的版权主张信息:

电子邮件版权主张:OP 对用户电子邮件地址(如 email)使用的版权主张。

First Name Claim:您的 OP 对用户用户名使用的声明,例如 given_name

Last Name Claim:您的 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 群组和用户。这样一来,您就可以在一个位置集中管理多个软件即服务 (SaaS) 工具(例如 Looker)的群组成员资格。

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

默认群组和角色

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

这些群组和角色会在新用户首次登录时应用。但不会应用于现有用户,也不会在用户首次登录后将其从用户中移除。

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

启用镜像 OpenID Connect 群组

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

群组声明:输入您的 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. 自定义名称字段右侧的字段中,选择将向组中的每位用户分配的一个或多个 Looker 角色

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

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

如果您从该页面中删除了某个群组,该群组将不会再在 Looker 中镜像,并且其成员将不再通过该群组为其分配 Looker 中的角色。

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

高级角色管理

如果您已启用镜像 OpenID Connect 网上论坛开关,Looker 会显示这些设置。这一部分中的选项决定了在配置从 OpenID Connect 镜像的 Looker 群组和用户时,Looker 管理员的灵活性。

例如,如果您希望 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。

配置迁移选项

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

为指定用户设置备用登录信息

启用 OpenID Connect 身份验证后,系统会为普通用户停用 Looker 电子邮件地址/密码登录功能。如果指定用户的备用登录选项允许管理员和拥有 login_special_email 权限的指定用户使用 /login/email 进行基于电子邮件的备用登录,

当 OpenID Connect 配置问题在稍后发生时,或者如果您需要支持某些没有在您的 OpenID Connect 目录中的帐号的用户时,启用此功能非常有用。

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

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

合并用户的方式字段中,指定要用于将首次 Open ID Connect 登录合并到现有用户帐号的方法。选项包括 Looker 电子邮件地址/密码GoogleLDAPSAML

如果您部署了多个身份验证系统,可以在此字段中指定多个要合并的系统。Looker 会按照指定顺序查找系统中列出的用户。例如,假设您使用 Looker 电子邮件地址/密码创建了一些用户,然后启用了 LDAP,现在您想使用 OpenID Connect。在上述示例中,Looker 会依次按电子邮件地址/密码合并 LDAP。

用户首次使用 OpenID Connect 登录时,此选项会通过查找具有匹配电子邮件地址的帐号将其连接到现有帐号。如果该用户没有现有帐号,则系统会创建一个新用户帐号。

测试用户身份验证

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

仔细阅读测试结果;测试的某些部分可以成功,即使其他部分失败。

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

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

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

提示

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

保存并应用设置

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

输入完信息,并且所有测试均通过后,请选中我确认了上述配置并想允许全局应用该配置,然后点击更新设置进行保存。