单点登录配置

我们的单点登录 (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 中定义其中一个权限组的名称。 如果名称不匹配,则将会向用户授予默认用户权限组。
例如:“管理员”(Admin)

说明

  • 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 发送其加密声明的端点。

Active Directory 联合服务 (AD FS) 配置

要配置 AD FS,需要有关在 Windows 平台上管理服务的复杂知识。Windows Server 2012 R2 上的 AD FS 可以正常工作,但我们未测试其他版本。

请注意,以下说明是作为示例提供的,可能不同于特定情况下所需的内容。
  1. 在 Windows Server 上,打开 Microsoft 管理控制台 (mmc.exe)并添加 AD FS 管理工具管理单元。单击“添加信赖方信任...”
     
    示例应用 - 之前

  2. 单击“开始”
     
    添加信赖方信任 - 欢迎

  3. 选中单选按钮“手动输入有关信赖方的数据”,然后按“下一步”。
     
    添加信赖方信任 - 选择数据源

  4. 输入您的应用程序名称,然后按“下一步”。
     
    添加信赖方信任 - 指定显示名称

  5. 选择“AD FS 配置文件”,然后单击“下一步”。
     
    添加信赖方信任 - 选择配置文件

  6. (可选)选择加密证书,然后按“下一步”。
     
    添加信赖方信任 - 配置证书

  7. 输入 AD FS 需要发送声明的 URL,然后按“下一步”。
     
        https://您的站点 URL/saml/saml_login_response
     
    添加信赖方信任 - 配置 URL

  8. 输入信赖方信任标识符的 URL,然后按“添加”。
     
        https://您的站点 URL/saml/metadata
     
    添加信赖方信任 - 配置标识符 - 输入

  9. 按“下一步”。
    添加信赖方信任 - 配置标识符 - 添加

  10. (可选)配置多重身份认证 (MFA),然后按“下一步”。
     
    添加信赖方信任 - MFA

  11. 配置颁发授权规则,然后按“下一步”。
     
    添加信赖方信任 - 授权规则

  12. 查看新配置,然后按“下一步”。
     
    添加信赖方信任 - 查看信息

  13. 完成并继续编辑声明规则。
     
    添加信赖方信任 - 完成

  14. 在声明规则编辑器中,单击“添加规则...”。
     
    编辑声明规则 - 空

  15. 选择“转换传入声明”,然后按“下一步”。
     
    编辑声明规则 - 添加规则 - 转换传入声明

  16. 输入规则名称(例如,NameId),选择声明类型“Windows 帐户名称”,将“传出声明类型”设置为“名称 ID”,然后选择 ID 格式“临时标识符”。然后单击“完成”。
     
    编辑声明规则 - 添加名称 ID

  17. 回到声明规则编辑器中,单击“添加规则...”
     
    编辑声明规则 - 名称 ID

  18. 选择“以声明方式发送 LDAP 特性”,然后按“下一步”。
     
    编辑声明规则 - 添加规则 - 以声明方式发送 LDAP 特性

  19. 输入规则名称(例如,User Informations),选择属性存储 Active Directory,将 Given-NameSurnameE-Mail-Addesses 的映射分别添加到 firstnamelastnameemail 中。然后单击“完成”。
     
    编辑声明规则 - 添加用户信息

  20. 回到声明规则编辑器中,最后一次单击“添加规则...”。
     
    编辑声明规则 - 用户信息

  21. 选择“使用自定义规则发送声明”,然后按“下一步”。
     
    编辑声明规则 - 添加规则 - 使用自定义规则发送声明

  22. 输入规则名称(例如,access),然后输入自定义规则:
        => issue(Type = "access", Value = "true");
     
    在此示例中,我们允许所有人访问 Shotgun。您可能希望应用不同的规则。
     
    然后单击“完成”。
     
    编辑声明规则 - 添加访问

  23. 通过这些声明,可提供 Shotgun 所需的最低信息量。单击“确定”。
     
    编辑声明规则 - 访问

  24. 现在,您可以在 Shotgun 上测试 SSO 设置。请注意,我们忽略了 groups 声明,因为要配置自定义规则,它需要组织特定的信息。
     
    示例应用 - 最终

  25. 向 Shotgun 管理员提供 SSO 配置。通常,这些内容将如下所示:
        SAML 2.0 端点 (HTTPS):https://YOUR_ADFS_SERVER/adfs/ls
        身份认证器:https://YOUR_ADFS_SERVER/adfs/services/trust
     
    对于公共证书,您可以在此下载联合元数据:
        https://YOUR_ADFS_SERVER/FederationMetada/2007-06/FederationMetadata.xml
    您将需要从 XML 文件提取:
        公共证书:ds:Signature 部分中的 X509Certificate

Okta 配置

配置 Okta 相对简单。

请注意,以下说明是作为示例提供的,可能不同于特定情况下所需的内容。

在连接到 Okta 管理门户后,转到“应用程序”(Applications)页面:

  1. 选择“添加应用程序”(Add Application)。
     
    添加应用程序(Add Application)

  2. 选择“创建新应用程序”(Create New App)。
     
    创建新应用程序(Create New App)

  3. 创建基于 Web 的新 SAML 2.0 应用程序。
     
    创建新应用程序

  4. 为新应用程序提供名称。
     
    创建 SAML 应用程序 - 常规

  5. 输入 SAML 设置。
     
        单点登录 URL (Single Sign on URL):https://您的站点 URL/saml/saml_login_response
        受众 URI (Audience URI):https://您的站点 URL/saml/metadata
     
    创建 SAML 应用程序 - 设置

  6. 输入 SAML 属性。
    login_id
    firstname
    lastname
    email
    access
    groups(可选)
     
    您决定使用的值将取决于您的组织。
     
    请注意,在此示例中,我们将 access 硬编码为 true,因为我们要在别处控制应用程序的可用性。我们还决定添加 groups 属性,我们为其填充组成员资格列表(管理员、美工人员或经理)。用户只能属于一个组。
     
    创建 SAML 应用程序 - 设置 - 声明

  7. 完成配置。
     
    创建 SAML 应用程序 - 完成

  8. 继续完成 Okta 配置的其余部分来确定对应用程序的访问,以及确保发送适当的属性。这将取决于您的组织以及您决定如何为属性设置值。

  9. 向 Shotgun 管理员提供 SSO 配置。单击“查看设置说明”(View Setup Instructions),并提供所示信息:
        SAML 2.0 端点(HTTPS) (SAML 2.0 Endpoint (HTTPS)):身份提供程序单点登录 URL
        身份认证器(Identity Provider Issuer):身份认证器
        公共证书(Public Certificate):X.509 证书
     
    而如果您下载元数据,您将需要提取:
        SAML 2.0 端点 (HTTPS):SingleSignOnService Binding Location
        身份认证器:EntityDescriptor entityID
        公共证书:X509Certificate
     
    创建 SAML 应用程序 - 设置

后续步骤

现在,您已配置了 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)窗格 -“设置”(Settings)
Shotgun“身份认证”(Authentication)窗格 -“设置”(Settings)

  • 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 信息更新这些信息。

允许的令牌列表包括:名字、姓氏、电子邮件和组。

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

Web 浏览器中的 Shotgun 使用 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 声明更新(除非通过 Ignore some fields in update 选项阻止更新)。
     
    您可能会发现通过单击“更多字段”(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 评论

登录写评论。