SSO(단일 로그온)[베타]

참고: Super Awesome Support에 있는 클라이언트에 대해서만 SSO를 사용할 수 있습니다.

중요 참고 사항

SSO는 아직 베타 기능입니다.

이론상 Shotgun은 SAML2를 지원하는 모든 IdP(ID 공급자)와 함께 작동해야 합니다. 현재 성공적으로 작동하는 곳은 다음과 같습니다.

  • ADFS,
  • PingIdentity,
  • Okta,
  • OneLogin

iOS 리뷰 앱은 현재 SSO 로그인을 지원하지 않습니다.

사이트에서 SSO를 사용할 경우 다음과 같은 부분이 변경됩니다.

  • 스튜디오에서 RV를 사용하는 경우 RV 버전 7.2.2 이상으로 업데이트해야 합니다.
  • Shotgun 데스크톱 또는 툴킷을 사용하는 경우 1.5.0 이상 버전으로 업데이트해야 합니다.
  • shotgun_api3 python 모듈을 사용하는 경우 더 이상 user_login/user_password 쌍을 사용하여 새 세션을 만들 수 없습니다.

관리자(Admin)는 사이트 기본 설정(Site Preferences) > 인증(Authentication)에서 SSO(단일 로그온) 구성에 액세스할 수 있습니다. 이 옵션은 Shotgun 지원 팀이 사이트에 대해 조치를 취한 이후에 표시됩니다. 아직 베타 기능이므로, 클라이언트와 온보딩 프로세스가 진행되며 보통 Shotgun 관리자(Admin) 및 SSO 관리자(Admin)의 회의를 거쳐 시작됩니다.

SSO 활성화 후 처음 로그인하면 조직의 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.

SSO

SSO는 Shotgun과 RV 모두에서 작동합니다.

RV의 SSO

SSO가 활성화된 경우 사용자가 SSO 없이 로그인을 시도하면 오류 메시지가 표시됩니다.

RV 오류 메시지

SSO 사용

사용자로서 SSO를 통해 로그인해도 Shotgun 사이트는 동일하게 보입니다. 하지만 사용자 이름은 조직의 로그인에 따라 달라질 수 있습니다.

관리자(Admin)는 다음과 같은 차이를 확인할 수 있습니다.

  • 더 이상 사용자 암호를 재설정할 수 없습니다. 이는 스튜디오의 IT 부서에서 제어합니다.
  • 조직에서 다른 사용자 이름을 발급하지 않는 한, 다른 사용자로 Shotgun을 테스트할 수 없으며 자신의 계정으로만 가능합니다.
  • 사용자는 로그인할 때 생성됩니다. Shotgun에 해당 로그인 ID를 가진 기존 사용자가 없는 경우 바로 생성됩니다. 기존 사용자의 이름을 바꾸면 중복된 사용자가 생성될 수 있습니다.
  • 사용자의 이름, 성, 전체 이름 또는 이메일을 변경하면 사용자가 로그인할 때 해당 필드가 초기값으로 재설정됩니다. 이는 해당 정보가 조직의 IT 부서에서 왔기 때문입니다.
  • 조직의 IT 부서는 신규 및 기존 사용자 모두에게 사이트 액세스 권한을 부여해야 합니다.
  • 사이트에 새 사용자를 초대하고 새 사용자를 생성할 수 있습니다. Shotgun에서 해당 사용자에게 환영 이메일을 보내면 사용자는 자신의 SSO 계정을 사용하여 로그인할 수 있습니다.
    • Shotgun에 사용자 초대
    • Shotgun에서 사용자 생성

SSO는 Shotgun 사이트에 다음과 같은 기능을 제공합니다.

  • 중앙에서 권한 관리
  • SSO 시스템에서 Shotgun 액세스 권한 부여 및 철회
  • SSO 시스템과 Shotgun 간 사용자 정보(예: 이름 및 이메일) 동기화

구성

SSO 활성화에는 최소 구성이 필요합니다.

참고: SSO는 SAML(Security Assertion Markup Language) 인증을 사용합니다. 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 공급자 발급자: 서비스에서 사용할 ID입니다.
    2. 테스트 버튼을 클릭하여 SAML 인증을 테스트합니다.
      SAML 테스트
      로그인 가능 여부를 확인하는 새 탭을 수락합니다.
    3. 테스트에 성공하면 "SAML 인증(SAML Authentication)"을 인증 방법으로 설정합니다.
      SAML 인증 설정

기타 옵션

YAML 구성은 이 문서의 끝 부분에서 다룹니다.

SSO 활성화 및 비활성화

관리자(Admin)는 SSO를 활성화 및 비활성화할 수 있습니다. SSO를 활성화 또는 비활성화할 때마다 이메일을 받게 됩니다.

SSO 활성화

SSO를 비활성화하는 경우 이전 Shotgun 사용자 이름 및 암호를 사용하여 로그인할 수 있습니다.

SSO 비활성화

SSO를 활성화하기 전에 Shotgun 계정이 없는 경우 암호를 재설정할 수 있는 이메일을 받게 됩니다.

암호 재설정

SAML2 구성

계약

Active Directory SAML2 응답은 다음 5가지 속성을 제공해야 합니다.

이름 유형 현재 상태 상세 정보
login_id 문자열 필수 사용자가 Shotgun에서 사용할 ID입니다. ID는 Shotgun 내에서 고유해야 합니다.
firstname 문자열 필수 사용자 이름입니다.
lastname 문자열 필수 사용자의 성입니다.
email 문자열 필수 사용자의 이메일 주소입니다.
access 문자열: true/false 필수 'true'인 경우 사용자는 Shotgun에 액세스할 수 있습니다.
groups 문자열 선택

표시되지 않거나 비어 있는 경우 사용자의 권한 그룹이 현재 값에서 수정되지 않습니다. 새 사용자의 경우 사이트 기본 설정에서 정의된 대로 기본 사용자 권한 그룹이 사용됩니다.

표시되는 경우 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(ID 공급자)의 모든 호출은 인증서로 암호화됩니다. 기본적으로 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