单点登录 (SSO) [Beta 版]

注意:仅享有 Super Awesome 支持的客户可以使用 SSO。

重要说明

SSO 仍然是 Beta 版功能。

支持 SAML2 的任何身份提供程序 (IdP) 理论上都应适用于 Shotgun。我们已成功使用:

  • ADFS
  • PingIdentity
  • Okta
  • OneLogin。

目前不支持 NTLM。

目前 iOS 审核应用不支持 SSO 登录。

在您的站点上使用 SSO 将会产生以下影响:

  • 如果在您的工作室中使用 RV,您将需要更新版本的 RV(7.2.0 及更高版本)
  • 如果您使用 Shotgun Desktop 或 Toolkit,还将需要更新到支持 SSO 的版本。我们将在基础入门阶段提供必要的启动脚本。
  • 如果您使用 shotgun_api3 python 模块,您将无法再使用 user_login/user_password 对的方法来创建新会话。

作为管理员,您可以在“站点偏好设置 > 身份认证”(Site Preferences > Authentication)下方访问单点登录 (SSO) 配置。此选项仅在 Shotgun 支持人员为您的站点设为可用后显示。由于此功能仍是 Beta 版功能,我们有一个面向客户的上线流程,通常是先与您的 Shotgun 管理员和 SSO 管理员召开一次会议。

启用 SSO 后您首次登录时,系统将提示您使用您组织的用户名和密码。

SSO

SSO 适用于 Shotgun 和 RV。

RV 中的 SSO

如果启用了 SSO,RV 用户尝试不通过 SSO 登录时将会看到一条错误消息。

RV 错误消息

使用 SSO

作为用户,您通过 SSO 登录后,您的 Shotgun 站点看上去应相同。但是,您的用户名可能不同,具体取决于您组织的登录帐户。

作为管理员,您将注意到以下变化:

  • 您将无法再重置用户密码。这将由您工作室的 IT 部门控制。
  • 您将无法再以其他用户身份测试 Shotgun,只能使用您自己的帐户,除非您的组织给您发了其他用户名。
  • 登录时创建用户。如果 Shotgun 没有使用相应登录 ID 的现有用户,则将创建用户。请注意,重命名现有用户可能会导致创建重复的用户。
  • 如果您更改了某个用户的名字、姓氏、全名或电子邮件,当该用户登录时,这些字段将会被重置为原始信息。这是因为这些信息来自您组织的 IT 部门。
  • 您组织的 IT 部门必须向新用户和现有用户授予访问您站点的权限。
  • 您可以为您的站点邀请新用户和创建新用户。Shotgun 将向他们发送欢迎电子邮件,然后他们可以使用自己的 SSO 帐户登录。
    • 邀请用户访问 Shotgun
    • 在 Shotgun 中创建用户

SSO 对您的 Shotgun 站点提供以下功能:

  • 集中管理权限,
  • 授予和撤消从 SSO 系统访问 Shotgun 的权限,以及
  • 在 SSO 系统与 Shotgun 之间同步用户信息,例如姓名和电子邮件。

配置

启用 SSO 有最低配置要求。

注意:SSO 使用安全断言标记语言 (SAML) 身份认证。在完全配置并测试 SAML 之前,请勿激活 SAML。
    1. 设置采用 SAML 身份认证时的基本参数。(有关详细信息,请参见 http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf 中的第 8.3.6 章。)
      1. 公用证书:该证书将用于加密和解密您的请求。
      2. SAML 2.0 端点 (HTTPS):将与之联系以验证您的凭据的端点。例如,“https://single.login.url”。
      3. 身份认证器:您的服务将使用的 ID。
    2. 单击“Test”按钮测试 SAML 身份认证。
      测试 SAML
      接受新的选项卡以验证您是否可以登录。
    3. 如果测试成功,请设置“SAML 身份认证”(SAML Authentication)作为您的身份认证方法。
      设置 SAML 身份认证

其他选项

本文末尾将介绍 YAML 配置。

启用和禁用 SSO

管理员可以启用和禁用 SSO。每次启用或禁用 SSO,您都将收到一封电子邮件。

启用 SSO

如果您禁用 SSO,可以使用您原来的 Shotgun 用户名和密码登录。

禁用 SSO

如果在启用 SSO 之前您没有 Shotgun 帐户,您将收到一封电子邮件,让您可以重置您的密码。

重置密码

SAML2 配置

协定

Active Directory SAML2 响应必须提供 5 个属性:

名称 类型 状态 详细信息
login_id 字符串 强制性 用户将在 Shotgun 中拥有的 ID。这在 Shotgun 中必须是唯一的。
firstname 字符串 强制性 用户的名字。
lastname 字符串 强制性 用户的姓氏。
email 字符串 强制性 用户的电子邮件地址。
access 字符串:true/false 强制性 如果为“true”,用户将有权访问 Shotgun。
groups 字符串 可选

如果此项不存在或为空,则将不会修改用户的权限组的当前值。对于新用户,将使用在“站点偏好设置”(Site Preferences)中定义的默认用户权限组。

如果此项存在,则应该对应于在 Shotgun 中定义其中一个权限组的名称。如果名称不匹配,则将会向用户授予默认的用户权限组。

例如:“管理员”(Admin)

会话持续时间基于 SAML 响应:

  • 如果 saml:AuthnStatement 包含字段 SessionNotOnOrAfter,则该字段将指示会话的持续时间。
  • 否则,saml:Conditions 字段 NotOnOrAfter 指示会话持续时间。

在会话结束时,恢复会话可能会要求用户输入其凭据。

示例

下面是 Shotgun 的有效 SAML 响应示例。(请注意,一些相关字段已被删除。)

SAML2 响应:

[...]
        <saml:Subject>
            <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
                         NameQualifier="https://your.sso-service.com/saml2"
                         SPNameQualifier="https://your.site.com/saml/metadata"
                         >ziP0wDQy0yS1kFg8DmyzqQpaD0a</saml:NameID>
            <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                <saml:SubjectConfirmationData Recipient="https://your.site.com/saml/saml_login_response"
                                              NotOnOrAfter="2017-01-23T16:53:01.292Z"
                                              InResponseTo="_8fde3e06-9c0b-4c55-bf14-85e82aef9e4b"
                                              />
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Conditions NotBefore="2017-01-23T16:48:01.292Z"
                         NotOnOrAfter="2017-01-23T16:53:01.292Z"
                         >
        </saml:Conditions>
[...]
        <saml:AttributeStatement>
            <saml:Attribute Name="login_id"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >a_username</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="firstname"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >a_firstame</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="access"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >true</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="groups"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >Admin</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="email"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >a_user@your.site.com</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="lastname"
                            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                            >
                <saml:AttributeValue xsi:type="xs:string"
                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                     >a_lastname</saml:AttributeValue>
            </saml:Attribute>
        </saml:AttributeStatement>
    </saml:Assertion>
</samlp:Response>

加密和其他选项

加密

来自身份提供程序 (IdP) 的每个调用都使用证书加密。默认情况下,对 IdP 的每个调用都不加密。可以通过在 YAML 中提供合适的选项来强制加密。

YAML 附加配置

要输入补充配置,请使用 SSO 配置(YAML 格式)编辑框。

如名称所示,必须使用 YAML 格式,并采用合适的部分标题。

下面是附加加密和单点注销 (SLO) 设置示例:

加密

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

单点注销

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

在更新中忽略某些字段:

ignore_updates: 
-
email
- firstname

自动规定(默认为 true):

autoprovision: false

激活 SSO 时跳过发送电子邮件(默认为 false):

skip_activation_email: true

使用辅助浏览器窗口续展用户凭据(默认为 false):

saml_claims_renew_iframe_embedding_disabled: true
关注

0 评论

登录写评论。