单点登录 (SSO) 配置

我们的单点登录 (SSO) 执行非常灵活,因为我们不需要身份提供程序 (IdP) 服务器能够直接与 Shotgun 服务器通信,反之亦然。在它们之间传输的信息流会进行签名,并通过客户端应用程序传输。通常是连接到 Shotgun 的浏览器。

必须先完成 IdP 配置。IdP 必须将 login_id(映射到用户的 Shotgun 登录名)发送到 Shotgun。这是两个系统之间的关键链接。在过渡到 SSO 的现有 Shotgun 站点的上下文中,请确保 IdP 发送的内容匹配 Shotgun 中的现有登录名。如果 IdP 发送的 login_id 和 Shotgun 登录名未能正确匹配,则可能会导致出现重复的用户。

过渡现有站点时,第一步是审核 Shotgun 中使用的登录名。如果无法匹配两组登录名或匹配操作过于复杂,Shotgun 为现有用户提供了解决这个问题的方法。要了解更多信息,请参见 Shotgun 管理员部分。

我们将配置手册分为了两个部分:面向 IdP 管理员和面向 Shotgun 管理员。

IdP 管理员

Shotgun 使用 SAML 2.0 实现 SSO 支持。它是使用了多年的标准,我们考虑的大多数 IdP 提供程序都支持该标准。

每个 IdP 系统都采用不同的机制对其进行管理。我们将提供 ADFSOkta 中的示例集成,但在您的环境中情况可能会有所不同。

SAML 属性

在 IdP 配置中,需要添加要向 Shotgun 传递的属性。

SAML2 响应有效负载必须包含以下属性:

名称 类型 状态 说明
login_id 字符串 必需 用户在 Shotgun 中使用的登录 ID。
这在 Shotgun 中必须是唯一的,且在会话之间必须一致。
firstname 字符串 必需 用户的名字。
lastname 字符串 必需 用户的姓氏。
email 字符串 必需 用户的电子邮件地址。
access 字符串 必需 值只能为 truefalse
如果值为 true,用户将有权访问 Shotgun。
groups 字符串 可选 如果此项不存在或为空,则将不会修改用户的权限组的当前值。对于新用户,将使用在“站点偏好设置”(Site Preferences)中定义的默认用户权限组。
如果此项存在,则应该对应于在 Shotgun 中定义其中一个权限组的名称。如果名称不匹配,则将会向用户授予默认用户权限组。
例如:“管理员”

说明

  • groups 属性是可选属性,如果不存在(或无效),则将不会修改用户的权限组。如果填充此属性的复杂性增加,强烈建议忽略此项(至少一开始时这样)以方便进行初始配置。可由 Shotgun 管理员管理此项。
  • 我们不使用 SAML 有效负载中提供的 NameID。而是使用客户端提供的属性 login_id

在对 login_idaccessgroups 做出决策时,可以使用多个策略。

login_id 必须唯一且保持不变。电子邮件地址或姓名看起来可能是不错的选择,但务必要了解它们发生变化(例如,有人更改姓氏)时的应对措施。

对于 accessgroups,Windows 环境中的一个常见策略是使用 Active Directory 安全组。用户是否在给定组中会通过属性值反映。

强烈建议在首次配置 IdP 时忽略 groups 属性。您可以在以后决定是否需要集中管理此项,或者是否可以留给 Shotgun 管理员。

SAML 端点

Shotgun 服务器定义了两个 SAML 特定的端点。仅当 SAML 设置为身份认证方法时,或在测试 SAML 配置时,这些端点才会处于激活状态。

为 Shotgun 配置 IdP 时需要以下端点。

URL 说明
https://YOUR_SITE_URL/saml/metadata Shotgun 在此公开自己的其他端点的 SP 端点。
https://YOUR_SITE_URL/saml/saml_login_response IdP 必须在此向 Shotgun 发送其加密声明的端点。

身份提供程序 (IdP) 配置

下一步是配置您的身份提供程序。我们无法为每个可能的提供程序提供手册,以下是两个常见提供程序的便捷分步说明:

后续步骤

现在,您已配置了 IdP,Shotgun 管理员可以使用所需的信息配置和测试 Shotgun。

Shotgun 管理员将需要:

  • SAML 2.0 端点 (HTTPS) URL,
  • IdP 用于对其有效负载进行签名的公共证书,和
  • 身份认证器字符串。

这些项的实际名称可能会因使用的 IdP 而有所不同。

理想情况下,在配置 Shotgun 过程中,您希望能够帮助解决任何问题。

Shotgun 管理员

在尝试配置 Shotgun 之前,您需要等待 IdP 配置完成。完成后,IdP 管理员将为您提供 Shotgun 所需的信息。

配置 Shotgun

以管理员身份登录后,您需要通过右上角的设置菜单转到“站点偏好设置”(Site Preferences)页面:

Shotgun 用户菜单
Shotgun 用户菜单

转到“身份认证”(Authentication)窗格,并将其打开:

Shotgun“身份认证”(Authentication)窗格
Shotgun“身份认证”(Authentication)窗格

警告:请勿在测试 SAML 身份认证之前将其启用。

如果未看到“SAML 身份认证”(SAML Authentication)单选按钮和部分,请联系 Shotgun 支持,以便将其启用。

现在,可以打开“SAML 身份认证”(SAML Authentication)部分来输入信息:

Shotgun“身份认证”(Authentication)窗格设置
Shotgun“身份认证”(Authentication)窗格设置

  • SAML 2.0 端点(HTTPS) (SAML 2.0 Endpoint (HTTPS)):SSO 后端的 URL,Shotgun 将在此重定向以进行身份认证。
  • 公共证书(Public Certificate):与 IdP 通信所需的证书。
  • 身份认证器(Identity Provider Issuer):服务的实体 ID,由 IdP 定义。
  • SSO 配置(YAML 格式) (SSO Configuration (YAML Format)):其他配置设置。请参见下一部分。

是否需要使用其他配置?

在“SSO 配置”(SSO Configuration)面板中可以进行其他配置(采用 YAML 格式)。这些选项仅用于特殊情况。

下面是接受的令牌和使用示例列表。未知令牌将直接忽略。如果格式不正确或值错误,可能会影响整套配置。请小心操作。

加密

默认情况下,我们只使用 IdP 提供的公钥进行加密。如果需要,Shotgun 还可以对其请求进行签名。生成证书后,需要将公共证书提供给 IdP。将在此处输入私钥:

service_provider:
  private_key: "KEY" # the key used for encryption
security:
  authn_requests_signed: true # authorization requests are encrypted
  logout_requests_signed: true # logout requests are encrypted
  logout_responses_signed: true # logout responses are encrypted

单点注销 (SLO)

默认情况下,我们不使用 SLO。如果需要,可以使用以下令牌对其进行配置:

identity_provider:
  slo_target_url: https://single.logout.url

在更新中忽略某些字段

如前所述,Shotgun 将 IdP 视为用户信息的权威来源。Shotgun 中的任何信息将在登录时和更新声明时从 IdP 更新。

在某些特定情况下,可能需要保护管理员在 Shotgun 中设置的信息,并防止使用 IdP 信息更新这些信息。

允许的令牌列表包括:firstname、lastname、email 和 groups。

ignore_updates:
  - email

自动配置

默认值:true

自动配置处于启用状态时,对于已被授予访问 Shotgun 的权限但不存在于其数据库中的任何用户,将自动使用 IdP 提供的信息为其创建帐户。如果未提供组,则会向用户分配 Shotgun 的“默认用户权限组”(Default User Permission Group)值,如“站点偏好设置”(Site Preferences)的“高级”(Advanced)设置所示。

自动创建用户通常是不可取的。新用户将无权访问相关项目,需要 Shotgun 管理员帮助解决。一般情况下,建议管理员提前创建用户,并为其提供适当的权限和正确的登录名。这样,用户使用时更加方便。

autoprovision: false

在激活 SSO 时不发送电子邮件

默认值:false

每当激活或取消激活 SSO 时,都会向所有激活用户发送电子邮件。此电子邮件是为了让他们了解 SSO 的状态以及他们需要采取的任何操作。

强烈建议在临时服务器上执行初始测试时或在生产服务器上执行测试时禁用电子邮件激活。这可避免给用户造成混淆以及不必要的支持活动。

skip_activation_email: true

使用辅助浏览器窗口更新用户凭据

默认值:false

Shotgun 在 Web 浏览器中使用 iframe 向 IdP 服务器更新用户的声明。一些 IdP 系统不允许客户端使用 iframe 进行身份认证。例如,Okta 的默认配置拒绝使用 iframe,除非 IdP 管理员明确更改该配置。对于 Okta,这是系统范围的设置,该设置将影响所有其他应用程序,而不只是 Shotgun。您的 IdP 可能存在类似的限制。

为了避开此限制条件,Shotgun 将在屏幕左下角打开一个辅助浏览器窗口,并要求用户不要关闭此窗口。如果不允许使用 iframe,应为 Shotgun 配置此设置。

saml_claims_renew_iframe_embedding_disabled: true

测试配置

输入所需值后,保存设置,但不要将身份认证模式设置为“SAML 身份认证”(SAML Authentication)。先使用“测试”(Test)链接来验证配置。您可能需要允许 Shotgun 打开弹出窗口。

强烈建议在测试时 IdP 管理员应在场。这有助于解决问题。

失败

Shotgun 测试失败
Shotgun 测试失败

出现这种情况时,应该有一些指示信息、弹出窗口或输出可帮助您识别问题。如果您和您的 IdP 管理员找不到问题,您可能需要打开 Shotgun 支持工单,以便我们可以查看服务器日志。

成功

Shotgun 测试成功
Shotgun 测试成功

如果测试成功,您可以继续进行后续步骤。

后续步骤

现在,配置可以正常使用,您可以继续。

首先在临时服务器上测试

这在前面提过多次,但我们确实必须强调此步骤的必要性。这有助于确保您的所有工具、脚本和第三方应用程序与 Shotgun 正确通信。您必须确认生产工作流的所有部分都按预期工作。在生产站点上启用 SSO 后,稳定性就是主要问题。

在生产站点上启用 SSO 之前,我们需要您清晰准确地表明您在临时站点上的所有测试都已成功。此外,这也让我们的支持团队对您站点上的 SSO 相关问题保持警惕。

启用 SSO

在临时站点上,应禁用电子邮件通知以避免给用户造成混淆。您可能会循环操作几次来启用和禁用 SSO。

在生产站点上,如果您计划进行测试,可能也需要暂时禁用电子邮件通知。启用 SSO 将终止站点上正在进行的所有会话,用户更改配置的情况除外。应在只有少量用户与 Shotgun 交互的非高峰时段进行此操作。

虽然在启用 SSO 后将会向所有激活用户发送电子邮件,但您也可以选择提前发送通知电子邮件。此电子邮件可以向用户解释执行此操作的原因和时间,以及如果他们遇到任何问题应该联系谁。

Shotgun 登录流会尝试尽可能解决初始登录问题。用户可以选择基于电子邮件链接自己的现有帐户,或使用自己的旧用户名和密码进行身份认证。虽然这样可以顺利建立首次连接,但也很复杂且容易出错。可能会错误地创建重复的用户,从而导致需要进行支持活动,以及收取重复用户的费用。

我们的目标是使 SSO 过渡对于用户来说是透明的。为了达到这种效果,可以采取几个步骤来实现无缝过渡。

现有用户轻松过渡

身份认证过程的核心在于匹配 IdP 提供的 login_id 与现有 Shotgun 登录名。应审核现有 Shotgun 用户库,验证是否存在用于指定“登录名”(login)值的恒定规则,以及确保 IdP 能够发送匹配的 login_id

如果存在匹配项,用户将立即与其 Shotgun 站点连接,而无需自己执行任何额外的步骤或输入。这是理想状况。

作为 Shotgun 管理员,您可以采取一些步骤来解决以下情况:Shotgun 登录名命名不一致,或无法轻松地确保 IdP 发送正确的 login_id

第一种解决方案:
只需更改用户的 Shotgun 登录名以匹配 IdP login_id您需要让用户知道新用户名是什么。如果已禁用 SSO,则他们需要新用户名并使用其旧密码连接到 Shotgun。

第二种解决方案:
将 IdP 帐户与 Shotgun 帐户链接:

  1. 使用管理员帐户连接到 Shotgun 站点。
  2. 导航到“人员”(People)页面:
     
    Shotgun 用户菜单

  3. 确保“单点登录方式的登录”(Single Sign-On Login)列可见:
     
    Shotgun“人员”(People) - 修复之前

  4. 编辑有问题的用户对应的字段,然后输入 IdP 发送的 login_id
     
    Shotgun“人员”(People) - 修复之后

  5. 现在,帐户已链接,有问题的用户将能够以适当的用户身份登录。

对于一些非常规的 Shotgun 登录名,您可能必须按照这些步骤操作。

邀请和创建新用户

SSO 处于启用状态时,有两种添加新用户的方式。在这两种情况下,都必须先更新 IdP 来为这些用户授予访问权限,然后再在 Shotgun 中采取任何操作。

  1. 使用管理员帐户连接到 Shotgun 站点。
  2. 导航到“人员”(People)页面:
     
    Shotgun“人员”(People) - 添加

  3. 根据情况,有两种方式:
  • 第一种方式是邀请新用户。这是默认方式。单击“+ Person”按钮将打开“邀请”(Invite)对话框:
     
    Shotgun“人员”(People) - 邀请
    此对话框将向用户发送邀请电子邮件。不在 Shotgun 进行任何更改。必须已在 IdP 中为用户授予访问 Shotgun 的权限。
     
    如果 autoprovision 设置为 false,则用户将无法使用 Shotgun,直到管理员创建用户。
     
    否则,在用户首次登录时,系统将向用户显示一个对话框,询问他们是与以前的现有帐户链接还是创建新用户。
     
    如果选择前一个选项,则将显示一个页面,他们需要在此页面上使用以前帐户的 Shotgun 用户名和 Shotgun 密码进行身份认证。如果选择后一个选项,则将创建一个无权访问任何项目的新用户。
     
    注意:发送邀请可能不是添加新用户的理想方式。
     
  • 第二种方式是创建新人员。单击“立即创建新人员”(Create a new Person now),打开之前的用户创建对话框:
     
    Shotgun“人员”(People) - 创建
    这将在 Shotgun 中创建具有指定访问权限的新用户,并且也向指定的地址发送邀请电子邮件。请注意输入的信息,因为在用户首次登录时,它可能会被 IdP 声明更新(除非通过在更新中忽略某些字段选项阻止更新)。
     
    您可能会发现,通过单击“更多字段”(More fields)和添加“单点登录方式的登录”(Single Sign-On Login)字段来修改对话框很有用。这样,您可以输入其他信息来确保新用户进行无缝连接。
     
    注意:这是添加用户的首选方式。

SSO 处于启用状态时 Shotgun 中的登录流

SSO 处于启用状态时,Shotgun 必须进行其他检查,用户才能连接。在首次连接时,更是如此。下面是登录流背后的逻辑:

登录流
登录流

可能会发生的两个重要情况为:链接帐户和创建用户。在任一情况下,用户都需要执行一系列步骤,这对他们来说可能很复杂。

为了使其体验尽可能无缝,应由 Shotgun 管理员创建用户和/或链接帐户。这就需要管理员完成更多工作,但对用户来说是有利的。有关详细信息,请参见现有用户轻松过渡

使用内部工具和第三方应用程序访问 Shotgun 站点

使用用户名/密码对与 Shotgun 服务器建立连接的任何内部工具或脚本都需要修改。

其中一些可用的方式:

  • 使用 Shotgun Toolkit 提供的身份认证模块(将需要 PySide/PyQt)。
  • 使用 Shotgun Desktop 处理身份认证,并从其获取会话令牌。
  • 向 IdP 执行您自己的 SSO 登录流。我们可以提供所需的高级步骤,以及其他技术信息。

对于第三方应用程序,如果不支持 Shotgun 中的 SSO,您将需要联系各个开发人员。

总结

对于现有用户,理想情况下,login_id 应匹配 Shotgun 登录名。但并不能够总是如此。

如何选择要由我的 IdP 发送的 login_id

请记住 login_id 应始终保持不变且唯一这个限制条件。

我们的一些客户已决定使用电子邮件或“名字.姓氏”作为 login_id。如果用户名更改,这可能会出现问题。但是,更改名称可能不常出现,因此可以选择这种方式,只需要 Shotgun 管理员偶尔进行干预。

其他客户已使用其员工的 ID。尽管这可能不受员工姓名更改的影响,但 Shotgun 管理员处理这些是有一些难度的。ID 与员工的映射关系并不明显,并且可能会出现输入错误。

其他信息

如果您在配置过程中遇到任何严重问题,请联系我们的支持团队

在初始的入门会议后,我们还会在初始配置或疑难解答过程中提供帮助。

如果您对本手册有任何建议或意见,我们将不胜感激。如果您使用的 IdP 我们尚未记录,我们希望添加您采用的设置说明以及相应的屏幕截图来丰富本手册内容。

要了解更多信息,请参见 Shotgun 中的单点登录 (SSO):管理员手册单点登录疑难解答

关注

0 评论

登录写评论。