SAML을 Microsoft ADFS와 Microsoft Windows Server 2016을 사용하여 구성하는 방법

본 문서는 Mattermost 및 Microsoft Windows Server 2016을 위한 SAML 2.0을 Microsoft ADFS와 구성하는 단계를 제공합니다.

시작하기 전에

시작하기 전에 SAML 연결을 암호화하기 위한 암호화 인증서를 생성해야합니다.

  1. Bash script 를 사용할 수 있습니다. 이 스크립트는 GitHub의 mattermost/docs 저장소에서 가져오거나 다른 적합한 방법을 사용할 수 있습니다.

  2. 생성된 두 파일을 저장합니다. 이 파일들은 개인 키와 공개 키입니다. 시스템 콘솔에서 서비스 제공자 개인 키서비스 제공자 공개 인증서 로 참조됩니다.

전제 조건

  • 모든 사용자가 이메일 및 사용자 이름 속성이 지정된 Active Directory 인스턴스. Mattermost 서버가 3.3 및 이전 버전에서 실행 중인 경우 사용자는 또한 이름과 성 속성을 지정해야 합니다.

  • 실행 중인 Microsoft Server. 이 안내서에서 사용된 스크린샷은 Microsoft Server 2012R2에서 가져왔지만 유사한 단계가 다른 버전에서도 작동해야 합니다.

  • ADFS 로그인 페이지에 서명할 SSL 인증서.

  • Microsoft Server에 ADFS가 설치되어 있어야 합니다. 이 문서 에서 ADFS를 배포하고 구성하는 자세한 안내를 찾을 수 있습니다.

ADFS 설치에서 ADFS 콘솔을 엽니다. 서비스 를 선택한 다음 엔드포인트 를 선택합니다. 유형 열에서 SAML 2.0/WS-Federation 을 검색하고 URL 경로 열의 값(이 가이드에서는 SAML SSO URL 엔드포인트 로도 알려짐)을 메모해둡니다. 기본값을 선택한 경우, 이 값은 /adfs/ls 가 될 것입니다.

신뢰 파트너 신뢰 추가

  1. ADFS 관리 스냅인을 열고, 오른쪽 사이드바에서 AD FS > 신뢰 파트너 신뢰 > 신뢰 파트너 신뢰 추가 를 선택합니다. 또는 신뢰 파트너 신뢰 를 마우스 오른쪽 버튼으로 클릭한 다음 컨텍스트 메뉴에서 신뢰 파트너 신뢰 추가 를 선택할 수도 있습니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_000.png
  2. 구성 마법사의 시작 화면에서 Claims aware 를 선택한 다음 시작 을 선택합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_001.png
  3. 데이터 원본 선택 화면에서 신뢰 파트너에 대한 데이터 수동으로 입력 을 선택합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_002.png
  4. 디스플레이 이름 지정 화면에 디스플레이 이름 (예: Mattermost )을 입력합니다. 선택적인 주석을 추가할 수 있습니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_003.png
  5. 인증서 구성 화면에서 인증서 설정을 기본 값으로 유지합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_004.png

SAML 연결 암호화를 설정하려면 찾아보기 를 선택한 다음 서비스 제공자 공개 인증서를 업로드합니다.

../_images/SSO-SAML-ADFS_add-new-relying-party-trust_005.png
  1. URL 구성 화면에서 SAML 2.0 웹SSO 프로토콜 지원 사용 을 선택한 다음 다음 형식에 맞춰 SAML 2.0 SSO 서비스 URL 을 입력하세요: https:// <your-mattermost-url>/login/sso/saml 여기서 <your-mattermost-url> 은 보통 Mattermost 사이트 URL 과 일치해야 합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_006.png
  2. 식별자 구성 화면에서 Relying party trust 식별자 를 입력합니다. 이는 요청된 클레임을 식별합니다. SAML 2.0 SSO 서비스 URL 형식은 보통 https:// <your-mattermost-url>/login/sso/saml 이고 <your-mattermost-url>Mattermost 사이트 URL 에 일치해야 합니다. 그런 다음 다음 을 선택합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_007.png ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_008.png

이 문자열은 서비스 제공자 식별자 문자열과 일치해야 합니다. Relying party trust 식별자에 대한 자세한 정보 및 접두사 일치가 적용되는 방법에 대한 자세한 내용은 이 문서 를 참조하세요.

동일한 프로세스를 사용하여 SAML 2.0 SSO 서비스 URL 을 추가하세요.

  1. 접근 제어 정책 선택 화면에서 환경에 적합한 접근 제어 정책을 선택합니다. 본 안내서는 기본값인 모두 허용 과 체크되지 않은 상자를 가정합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_009.png
  2. 신뢰 추가 준비 화면에서 설정을 검토합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_010.png
  3. 완료 화면에서 이 응용 프로그램에 대한 클레임 발급 정책 구성 을 선택한 다음 닫기 를 선택합니다.

    ../_images/SSO-SAML-ADFS_add-new-relying-party-trust_011.png

클레임 규칙 생성

  1. 클레임 규칙 편집기의 발급 변환 규칙 탭에서 규칙 추가… 를 선택합니다.

    ../_images/SSO-SAML-ADFS_create-claim-rules_001.png
  2. 규칙 유형 선택 화면에서 드롭다운 메뉴에서 LDAP 속성을 클레임으로 전송 을 선택한 다음 다음 을 선택합니다.

    ../_images/SSO-SAML-ADFS_create-claim-rules_002.png
  3. 클레임 규칙 구성 화면에서 클레임 규칙 이름 을 선택하고 Active Directory속성 저장소 로 선택한 다음 다음 매핑을 추가하세요:

  • LDAP 속성 열 에서 E-Mail-Addresses 를 선택합니다. 발신 클레임 유형 에서 이메일 을 입력합니다.

  • LDAP 속성 열 에서 E-Mail-Addresses 를 선택합니다. 발신 클레임 유형 에서 이름 ID 를 입력합니다.

  • LDAP 속성 열 에서 Given-Name 을 선택합니다. 발신 클레임 유형 에서 이름 을 입력합니다.

  • LDAP 속성 열 에서 Surname 을 선택합니다. 발신 클레임 유형 에서 을 입력합니다.

  • LDAP 속성 열 에서 SAM-Account-Name 을 선택합니다. 발신 클레임 유형 에서 사용자 이름 을 입력합니다.

이름 속성은 선택 사항입니다.

규칙을 추가하려면 완료 를 선택합니다.

발신 클레임 유형 열의 항목을 수정할 수 있습니다. 항목에는 대시가 포함될 수 있지만 공백은 포함되지 않아야 합니다. 이들은 Mattermost의 해당 필드를 매핑하는 데 사용됩니다.

../_images/SSO-SAML-ADFS_create-claim-rules_003.png
  1. Add Rule 를 선택하여 다른 규칙을 추가합니다.

  2. Choose Rule Type 화면에서 드롭다운 메뉴에서 Transform an Incoming Claim 를 선택한 후, 다음 을 선택합니다.

    ../_images/SSO-SAML-ADFS_create-claim-rules_004.png
  3. Configure Claim Rule 화면에서 Claim Rule Name 을 입력한 후, 다음을 수행합니다:

  • Incoming claim type 에 대해 Name ID 를 선택합니다.

  • Incoming name ID format 에 대해 Unspecified 를 선택합니다.

  • Outgoing claim type 에 대해 E-Mail Address 를 선택합니다.

Pass through all claim values 를 선택한 후 Finish 을 선택합니다.

../_images/SSO-SAML-ADFS_create-claim-rules_005.png
  1. 클레임 규칙을 만들기 위해 Finish 를 선택한 후, 규칙 생성을 완료하려면 OK 를 선택합니다.

  2. 관리자 권한으로 Windows PowerShell을 열고 다음 명령어를 실행합니다:

    Set-ADFSRelyingPartyTrust -TargetName <display-name> -SamlResponseSignature "MessageAndAssertion"

여기서 <display-name> 은 신뢰하는 파티 신뢰를 추가할 때 단계 4에서 지정한 이름입니다. 이 예시에서는 <display-name> 이 “mattermost”가 될 것입니다.

이 동작은 SAML 메시지에 서명을 추가하여 검증을 성공적으로 수행합니다.

아이덴티티 공급자 인증서 내보내기

다음으로, 나중에 Mattermost에 업로드 될 아이덴티티 공급자 인증서를 내보냅니다.

  1. ADFS 관리 스냅인을 열고 AD FS > Service > Certificates 를 선택한 후, Token-signing 아래의 인증서를 두 번 클릭합니다. 또는 해당 필드를 마우스 오른쪽 버튼으로 클릭한 후, 컨텍스트 메뉴에서 View Certificate 를 선택할 수도 있습니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_001.png
  2. Certificate 화면에서 Details 탭을 열고 Copy to File 을 선택한 후, OK 를 선택합니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_003.png
  3. Certificate Export Wizard 화면에서 Next 를 선택합니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_004.png
  4. Base-64 encoded X.509 (.CER) 를 선택한 후 다시 Next 를 선택합니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_005.png
  5. Certificate Export Wizard 화면에서 Browse 를 선택하여 아이덴티티 공급자 인증서를 내보낼 위치를 지정한 후, 파일 이름을 지정합니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_006.png
  6. Save 를 선택합니다. Certificate Export Wizard 화면에서 파일 경로가 올바른지 확인한 후 Next 를 선택합니다.

  7. Certificate Export Wizard 를 완료한 후, Finish 를 선택한 후, 내보내기가 성공적으로 수행되었음을 확인하려면 OK 를 선택합니다.

    ../_images/SSO-SAML-ADFS_export-id-provider-cert_007.png

Mattermost를 위한 SAML 로그인 구성

  1. ADFS 서버의 루트 URL에 “FederationMetadata/2007-06/FederationMetadata.xml”을 추가하여 메타데이터 URL을 생성합니다. 예를 들어: https:// <adfs.domain.com>/federationmetadata/2007-06/FederationMetadata.xml> .

다음으로, Mattermost 서버를 시작한 후 시스템 관리자로 Mattermost에 로그인합니다. System Console > Authentication > SAML 로 이동하여 Identity Provider Metadata URL 필드에 메타데이터 URL을 붙여넣은 후, Get SAML Metadata from IdP 를 선택합니다.

이렇게 하면 SAML SSO URLIdentity Provider Issuer URL 필드가 자동으로 채워지게 됩니다. 아이덴티티 공급자 공개 인증서도 서버로부터 다운로드되어 로컬로 설정됩니다.

다음 필드를 선택할 수 있습니다:
  • Enable Login With SAML 2.0true 로 설정합니다.

  • Enable Synchronizing SAML Accounts With AD/LDAP 를 환경에 맞게 설정합니다.

  • Override SAML bind data with AD/LDAP information 를 환경에 맞게 설정합니다.

만약 메타데이터 URL을 사용할 계획이 없다면 다음 필드를 직접 입력할 수 있습니다:
  • SAML SSO URL 은 처음에 ADFS에서 복사한 SAML 2.0/W-Federation URL ADFS Endpoint 를 사용합니다.

  • Identity Provider Issuer URL 은 ADFS의 Relying party trust identifier 를 사용합니다.

  • Identity Provider Public CertificateX.509 Public Certificate 를 사용합니다.

    ../_images/SSO-SAML-ADFS_configure-saml_001.png
  1. Mattermost를 서명 검증하도록 구성합니다.

  • Verify Signaturetrue 로 설정합니다.

  • Service Provider Login URL 은 ADFS에서 지정한 SAML 2.0 SSO service URL 을 사용합니다.

    ../_images/SSO-SAML-ADFS_configure-saml_002.png
  1. 암호화를 활성화합니다.

  • Enable Encryptiontrue 로 설정합니다.

  • Service Provider Private Key 는 이 프로세스 시작 시 생성된 서비스 공급자 개인 키를 사용합니다.

  • Service Provider Public Certificate 는 이 프로세스 시작 시 생성된 서비스 공급자 공용 인증서를 사용합니다.

  • Sign Request 를 환경에 맞게 설정합니다.

    ../_images/SSO-SAML-ADFS_configure-saml_003.png
  1. Mattermost의 SAML Assertions에 대한 속성을 설정하여 Mattermost에서 사용자 정보를 업데이트하는 데 사용됩니다. 이메일 및 사용자 이름에 대한 속성은 필수이며, 이전에 ADFS에서 입력한 값과 일치해야 합니다. 자세한 내용은 documentation on SAML configuration settings 를 참조하십시오.

3.3 및 이전 버전의 Mattermost 서버의 경우, 이름 및 성에 대한 속성도 필수 필드입니다.

../_images/SSO-SAML-ADFS_configure-saml_004.png
  1. Save 를 선택합니다.

  2. (선택 사항) Fi Name 속성 및 Last Name 속성을 구성했다면, System Console > Site Configuration > Users and Teams 로 이동한 후, Teammate Name DisplayShow fi and last name 으로 설정합니다. 이는 더 나은 사용자 경험을 위해 권장됩니다.

모든 작업이 완료되었습니다! SAML SSO가 성공적으로 활성화되었는지 확인하려면 프로필 사진을 클릭하여 시스템 관리자 계정을 이메일에서 SAML 기반 인증으로 전환한 후, SAML 자격 증명으로 로그인하여 전환을 완료합니다.

마이그레이션이 어떻게 진행될 것인지 사용자에게 공지하는 것이 좋습니다.

또한 config.json 파일을 편집하여 SAML을 ADFS에 구성할 수 있습니다. 변경 사항이 적용되려면 Mattermost 서버를 다시 시작해야 합니다.

자주 묻는 질문

인증을 이메일 대신 “Id” 속성에 바인딩하는 방법은 무엇인가요

대신 “Id” 속성을 사용하여 사용자를 바인딩할 수도 있습니다. 고유하고 시간이 지나도 변경되지 않을 ID를 선택하는 것이 좋습니다.

“Id” 속성으로 구성하면 이전 사용자의 정보가 노출되지 않고 새 사용자가 동일한 이메일 주소를 재사용할 수 있습니다. 예를 들어 이전에 joe.smith@mattermost.com 이메일 주소를 가진 사용자가 있었고, 새 직원인 Joe Smith가 동일한 이메일을 사용할 수 있습니다. 또한 사용자의 이름이 변경되고 이메일을 업데이트해야 하는 경우에도 유용합니다.

이 프로세스는 이메일 바인딩과의 하위 호환성을 갖추도록 설계되었습니다. 이 프로세스는 새 계정 생성 및 구성 이후 로그인하는 계정에 적용됩니다.

  • SAML로 인증된 사용자는 “Id” 속성을 사용하여 SAML 서비스 사용자에게 바인딩되거나 구성된 경우 SAML로부터 받은 이메일을 사용하여 이메일에 바인딩됩니다.

  • 사용자가 로그인을 시도하고 SAML 서버가 유효한 인증으로 응답하면 서버는 SAML 인증의 “Id” 필드를 사용하여 사용자를 검색합니다.

  • 해당 ID에 바인딩된 사용자가 이미 존재하면 해당 사용자로 로그인합니다.

  • 해당 ID에 바인딩된 사용자가 없으면 이메일을 기준으로 검색합니다.

  • 해당 이메일에 바인딩된 사용자가 있으면 해당 이메일로 로그인하고 인증 데이터를 이메일 대신 ID로 업데이트합니다.

  • ID 또는 이메일에 바인딩된 사용자가 없으면 SAML 계정에 바인딩된 새 Mattermost 계정을 생성하고 사용자의 로그인을 허용합니다.

Note

기존 계정은 서버에 로그인할 때까지 업데이트되지 않습니다.

Microsoft ADFS를 통한 SAML은 통합 Windows 인증 (IWA)로 구성할 수 있나요?

네. IWA는 브라우저에서 지원되며, 2019년 Q2 이후에 iOS 및 Android 모바일 앱에 지원이 추가되었습니다 (모바일 앱 v1.18 이상).

그러나 Electron의 제한으로 인해 Mattermost 데스크톱 앱에서는 IWA가 지원되지 않습니다. 대신 데스크톱 앱과 유사한 속도로 Mattermost에 빠르게 액세스하기 위해 브라우저 데스크톱 바로 가기를 만들 수 있습니다.

SAML을 통해 로그인한 사용자를 프로비저닝하거나 삭제할 수 있나요?

네, 그러나 이를 위해 AD/LDAP을 사용해야 합니다. 현재 SCIM을 지원하지는 않습니다. 자세한 정보는 사용자 비활성화 방법 을 참조하세요.

하나의 인증 방법(예: 이메일)에서 다른 인증 방법(SAML)으로 사용자를 이동하는 방법은 무엇인가요?

세부 정보는 mmctl user migrate-auth 명령어 문서를 참조하세요.

SAML은 OAuth 2.0 및 OpenId Connect와 어떻게 다른가요?

OAuth 2.0은 주로 위임된 승인을 위해 고안되었으며, 앱이 Google 연락처와 같은 리소스에 액세스할 권한을 부여받는 경우에 사용됩니다. 인증과는 관련이 없습니다.

OpenID Connect는 OAuth 2.0 기반으로 만들어졌으며, 따라서 직접 SSO를 지원하는 인증을 지원합니다.

SAML은 일반적으로 기업 환경에서 사용되는 반면, OpenID Connect는 소비자 웹사이트 및 웹/모바일 앱에서 더 일반적으로 사용됩니다.

자세한 내용은 https://hackernoon.com/demystifying-oauth-2-0-and-openid-connect-and-saml-12aa4cf9fdba 에서 알아보세요.

SAML 동기화 AD/LDAP 구성

SAML 로그인을 구성하는 것 외에도 SAML 계정 동기화를 AD/LDAP과 선택적으로 구성할 수 있습니다. 구성된 경우:

  • Mattermost는 관련 계정 정보를 얻기 위해 AD/LDAP을 쿼리하고 속성 변경(이름, 성, 닉네임)에 따라 SAML 계정을 업데이트합니다.

  • AD/LDAP에서 비활성화된 계정은 Mattermost에서 비활성화되며, 속성 동기화 이후 활성 세션이 취소됩니다.

AD/LDAP과 SAML 동기화를 구성하려면:

  1. 시스템 콘솔 > 인증 > SAML 2.0 으로 이동하여 AD/LDAP과 SAML 계정 동기화 활성화true 로 설정합니다.

  2. 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 AD/LDAP 동기화 활성화true 로 설정합니다.

  3. 동기화할 때 게스트 사용자를 무시하려면, 시스템 콘솔 > 인증 > SAML 2.0 으로 이동하여 AD/LDAP 동기화 시 게스트 사용자 무시true 로 설정하세요.

  4. AD/LDAP 서버와 Mattermost를 연결하려면 구성 설정 설명서 를 기반으로 AD/LDAP 설정의 나머지 부분을 설정합니다.

  • AD/LDAP 로그인을 활성화하고 싶지 않다면, 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 AD/LDAP으로 로그인 활성화false 로 설정합니다.

  1. Mattermost가 SAML 사용자 계정을 AD/LDAP와 얼마나 자주 동기화하는지 지정하려면, 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 동기화 간격 을 분 단위로 설정합니다. 기본 설정은 60분입니다. 계정 비활성화 후 즉시 동기화하려면 AD/LDAP 즉시 동기화 를 선택하세요.

  2. Mattermost가 AD/LDAP 서버와 성공적으로 연결되는지 확인하려면, 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 AD/LDAP 테스트 를 선택하세요.

AD/LDAP과의 동기화가 활성화되면 사용자 속성이 이메일 주소를 기반으로 AD/LDAP과 동기화됩니다. 특정 이메일 주소를 가진 사용자가 AD/LDAP 계정을 보유하지 않은 경우, 그들은 다음 AD/LDAP 동기화에서 Mattermost에서 비활성화됩니다.

계정을 재활성화하려면:

  1. 사용자를 AD/LDAP 서버에 추가하세요.

  2. 시스템 콘솔 > 환경 > 웹 서버 로 이동하여 모든 캐시 비우기 를 선택하여 Mattermost의 모든 캐시를 비웁니다.

  3. 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 AD/LDAP 즉시 동기화 를 선택하여 AD/LDAP 동기화를 실행하세요.

  4. 다시 시스템 콘솔 > 환경 > 웹 서버 로 이동하여 모든 캐시 비우기 를 선택하여 계정을 Mattermost에서 다시 활성화합니다.

Note

사용자가 AD/LDAP에서 비활성화되면, 다음 동기화에서 Mattermost에서도 비활성화됩니다. 사용자 목록에서 “비활성화”로 표시되며, 모든 세션이 만료되어 Mattermost에 다시 로그인할 수 없습니다.

사용자가 SAML에서 비활성화되면, 해당 사용자의 세션은 AD/LDAP에서 비활성화될 때까지 만료되지 않습니다. 그러나 Mattermost에 다시 로그인할 수 없습니다.

Note

SAML과 AD/LDAP의 동기화는 AD/LDAP에서 이름 및 성과 같은 사용자 속성을 가져오는 데 사용됩니다. 인증을 제어하는 것이 아니라, 즉 사용자 필터는 Mattermost에 로그인할 수 있는 사용자를 제어하는 데 사용할 수 없습니다. 이는 SAML 서비스 제공업체의 그룹 권한으로 제어되어야 합니다.

상세한 내용은 AD/LDAP과 SAML 동기화에 대한 기술적 설명 를 참조하세요.

AD/LDAP 데이터로 SAML 데이터 덮어씌우기

또는 SAML 바인드 데이터를 AD/LDAP 정보로 덮어씌울 수 있습니다. SAML ID 속성으로 사용자를 바인딩하는 방법에 대한 자세한 내용은 이 문서 를 참조하세요.

이 과정은 SAML 이메일 주소를 AD/LDAP 이메일 주소 데이터로 덮어씌우거나, 구성된 경우 SAML ID Attribute를 AD/LDAP ID Attribute로 덮어씌우게 됩니다. 이 설정을 사용하여 새로운 사용자가 이메일 주소가 변경되었을 때 생성되지 않도록 하는 것을 권장합니다.

기존 사용자 계정이 이 과정에서 비활성화되지 않도록 하려면 Mattermost 내에서 SAML ID와 LDAP ID가 일치함을 확인하려면 두 시스템에서 데이터를 내보내고 ID 데이터를 비교하세요. AD/LDAP 및 SAML의 ID 속성을 동일한 데이터를 보유하도록 Mattermost 내에서 매핑하면 ID도 일치하게 됩니다.

  1. 시스템 콘솔 > 인증 > SAML 2.0 > ID 속성 으로 이동하여 SAML의 ID 속성 을 설정하세요.

  2. 시스템 콘솔 > 인증 > SAML 2.0 으로 이동하여 SAML 바인드 데이터를 AD/LDAP 정보로 덮어씌우기true 로 설정하세요.

  3. 시스템 콘솔 > 인증 > SAML 2.0 > AD/LDAP 동기화 활성화true 로 설정합니다.

  4. 시스템 콘솔 > 인증 > AD/LDAP 으로 이동하여 AD/LDAP 동기화 즉시 실행 을 선택하여 AD/LDAP 동기화를 실행하세요.