Okta로 SAML 구성하기#

Mattermost용 Okta로 SAML 2.0을 구성하는 단계를 제공합니다.

시작하기 전에#

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

  1. GitHub의 mattermost/docs 저장소에서 Bash 스크립트 를 사용하거나 다른 적절한 방법을 사용할 수 있습니다. 여러 URL/IP에 사용할 자체 서명된 x509v3 인증서 생성에 대한 자세한 내용은 자체 서명 인증서 생성 문서를 참조하세요.

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

Mattermost Single Sign-On을 위한 연결 앱 설정하기#

  1. 관리자로 Okta에 로그인합니다.

  2. 왼쪽 상단의 드롭다운을 사용하여 Classic UI 로 전환합니다.

  3. Admin Dashboard > Applications > Add Application 으로 이동합니다.

  4. Create New App 을 선택한 다음 로그인 방법으로 SAML 2.0 을 선택합니다.

    Okta에서 Classic UI로 전환한 다음 Admin Dashboard > Applications > Add Application으로 이동하여 새 앱을 생성합니다. 로그인 방법으로 SAML 2.0을 선택합니다.
  5. App nameApp logo (선택 사항)를 포함한 애플리케이션의 General Settings 를 입력합니다. Okta Mobile 앱을 포함하여 사용자에게 애플리케이션 아이콘을 표시하는 것이 좋습니다. 애플리케이션에 Mattermost 로고를 사용하려면 저희 페이지 에서 다운로드할 수 있습니다.

    Okta의 General Settings에서 앱 이름과 선택적 로고를 입력합니다. Mattermost는 사용자와 Okta 모바일 앱 내에서 애플리케이션 아이콘을 표시하는 것을 권장합니다. 계속하려면 Next를 선택하세요.
  6. 다음을 포함한 SAML Settings 를 입력합니다:

  • Single sign on URL: https://<your-mattermost-url>/login/sso/saml 여기서 https://<your-mattermost-url> 은 일반적으로 Mattermost Site URL 과 일치해야 합니다.

  • Audience URI: 예를 들어, mattermost

  • Name ID format: unspecified

  • Application username: Email

    Okta의 Configure SAML에서 필요한 SAML 설정을 입력합니다.
  1. SAML 연결을 위한 암호화를 설정하려면 Show Advanced Settings 를 선택하세요.

    Okta의 Configure SAML에서 Show Advanced Settings를 선택하여 SAML 연결을 위한 암호화를 설정합니다.
  2. Assertion EncryptionEncrypted 로 설정한 다음, 이전에 생성한 Service Provider Public Certificate를 Encryption Certificate 필드에 업로드합니다.

    Advanced Settings에서 Assertion Encryption을 Encrypted로 설정한 다음, 생성된 Service Provider Public Certificate를 Encryption Certificate 필드에 업로드합니다.
  3. Okta와 Mattermost 간의 속성을 매핑하는 데 사용되는 속성 문을 입력합니다. 구성 가능한 속성에 대한 자세한 내용은 SAML 구성 설정 문서 를 참조하세요. 이메일과 사용자 이름 속성이 필요합니다. Okta와 함께 SAML을 사용하는 경우 ID 속성 도 필요하며, 해당 ID는 user.id 에 매핑되어야 합니다.

    Okta와 Mattermost 간의 속성을 매핑하는 데 사용되는 속성 문을 입력합니다. 이메일과 사용자 이름 속성이 필요합니다. Okta는 또한 user.id에 매핑되어야 하는 ID 속성도 필요합니다.
  4. Next 를 선택합니다. 그런 다음 애플리케이션에 대한 Okta 지원 매개변수를 설정합니다. 권장 설정:

  • 내부 앱을 추가하는 Okta 고객입니다

  • 이것은 우리가 만든 내부 앱입니다

    내부 앱을 추가하는 Okta 고객이고 우리가 만든 내부 앱이라는 것을 포함하여 애플리케이션에 대한 권장 Okta 지원 매개변수를 설정합니다.
  1. Finish 를 선택합니다.

  2. Mattermost System Console에서 Authentication > SAML 2.0 으로 이동한 다음, 현재 true 로 설정되어 있다면 Override SAML bind data with AD/LDAP informationfalse 로 설정합니다. 설정이 완료되면 나중에 이 구성 설정 을 다시 활성화할 수 있습니다.

  3. 다음 화면에서 Sign On 탭을 선택한 다음 View Setup Instructions 를 선택합니다.

  4. Identity Provider metadata 링크를 선택한 다음 브라우저 URL 필드에서 링크를 복사합니다. 이는 다음 섹션의 SAML 구성 단계에서 사용됩니다.

    Mattermost System Console에서 AD/LDAP 정보 설정으로 SAML 바인드 데이터 재정의를 비활성화한 후 Sign On 탭을 선택한 다음 View Setup Instructions를 선택합니다. Identity Provider metadata 링크를 선택한 다음 브라우저 URL 필드에서 링크를 복사하여 편리한 위치에 저장합니다.
  5. Mattermost의 SAML을 구성하는 데 필요할 수 있으므로 Identity Provider Single Sign-On URL (SAML SSO URL 이라고도 함)과 Identity Provider Issuer를 기록해 두세요.

  6. X.509 인증서 파일을 다운로드하여 저장합니다. 나중에 Mattermost에 업로드해야 할 수 있습니다.

    X.509 인증서 파일을 다운로드하여 저장합니다. 나중에 이 인증서 파일을 Mattermost에 업로드할 것입니다.

Mattermost용 SAML 로그인 구성#

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

이렇게 하면 SAML SSO URLIdentity Provider Issuer URL 필드가 자동으로 채워집니다. Identity Provider Public Certificate도 서버에서 다운로드되어 로컬에 설정됩니다.

또는 다음 필드를 수동으로 입력할 수 있습니다:
  • SAML SSO URL: 앞서 지정한 Okta의 Identity Provider Single Sign-On URL

  • Identity Provider Issuer URL: 앞서 지정한 Okta의 Identity Provider Issuer

  • Identity Provider Public Certificate: 앞서 Okta에서 다운로드한 X.509 Public Certificate 파일

    Mattermost System Console에서 Authentication > SAML 2.0으로 이동하여 SAML SSO URL과 Identity Provider Issuer URL을 수동으로 입력하고, Identity Provider Public Certificate를 수동으로 업로드합니다.
  1. 서명을 확인하도록 Mattermost를 구성합니다. Service Provider Login URL 은 앞서 Okta에서 지정한 Single sign on URL 입니다.

    SAML 2.0 페이지에서 서명을 확인하도록 Mattermost를 구성하고, Okta에서 구성한 Single sign on URL을 Service Provider Login URL로 설정합니다.
  2. 앞서 제공된 매개변수를 기반으로 암호화를 활성화합니다.

    SAML 2.0 페이지에서 암호화를 활성화하고 Service Provider Private Key와 Service Provider Public Certificate를 모두 업로드합니다.
  3. Service Provider Private Key를 사용하여 SAML 요청에 서명하도록 Mattermost를 구성합니다.

  4. Mattermost에서 사용자 정보를 업데이트하는 데 사용되는 SAML Assertions에 대한 속성을 설정합니다.
    • Email, Username, Id에 대한 속성이 필요하며 앞서 Okta에서 입력한 값과 일치해야 합니다.

    Mattermost에서 사용자 정보를 업데이트하는 데 사용되는 SAML Assertions에 대한 속성을 설정합니다. Email, Username, Id에 대한 속성이 필요하며 Okta에서 설정한 값과 일치해야 합니다.
  5. (선택 사항) 로그인 버튼 텍스트를 사용자 지정합니다.

    로그인 버튼 텍스트를 사용자 지정할 수 있습니다. 기본적으로 텍스트는 "With SAML"로 표시됩니다.
  6. Save 를 선택합니다.

  7. (선택 사항) First Name 속성과 Last Name 속성을 구성한 경우, System Console > Site Configuration > Users and Teams 로 이동하여 Teammate Name DisplayShow first and last name 으로 설정합니다. 더 나은 사용자 경험을 위해 권장됩니다.

완료 후 SAML SSO가 성공적으로 활성화되었는지 확인하려면 프로필 사진을 통해 Profile > Security > Sign-in Method > Switch to SAML SSO 로 이동하여 시스템 관리자 계정을 이메일에서 SAML 기반 인증으로 전환한 다음, SAML 자격 증명으로 로그인하여 전환을 완료합니다.

마이그레이션이 어떻게 작동하는지 설명하는 공지사항을 사용자에게 게시하는 것도 권장합니다.

config.json 파일을 편집하여 SAML configuration settings 를 기반으로 SAML을 활성화하여 Okta용 SAML을 구성할 수도 있습니다. 변경 사항을 적용하려면 Mattermost 서버를 재시작해야 합니다.

AD/LDAP와 SAML 동기화 구성#

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

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

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

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

  1. System Console > Authentication > SAML 2.0 로 이동한 다음 Enable Synchronizing SAML Accounts With AD/LDAPtrue 로 설정합니다.

  2. System Console > Authentication > AD/LDAP 로 이동한 다음 Enable Synchronization with AD/LDAPtrue 로 설정합니다.

  3. 동기화 시 게스트 사용자를 무시하려면 System Console > Authentication > SAML 2.0 로 이동한 다음 Ignore Guest Users when Synchronizing with AD/LDAPtrue 로 설정합니다.

  4. configuration settings documentation 를 기반으로 나머지 AD/LDAP 설정을 구성하여 Mattermost를 AD/LDAP 서버와 연결합니다.

  • AD/LDAP 로그인을 활성화하지 않으려면 System Console > Authentication > AD/LDAP 로 이동한 다음 Enable sign-in with AD/LDAPfalse 로 설정합니다.

  1. Mattermost가 SAML 사용자 계정을 AD/LDAP와 얼마나 자주 동기화할지 지정하려면 System Console > Authentication > AD/LDAP 로 이동한 다음 Synchronization Interval 을 분 단위로 설정합니다. 기본 설정은 60분입니다. 계정을 비활성화한 후 즉시 동기화하려면 AD/LDAP Synchronize Now 를 선택합니다.

  2. Mattermost가 AD/LDAP 서버에 성공적으로 연결할 수 있는지 확인하려면 System Console > Authentication > AD/LDAP 로 이동한 다음 AD/LDAP Test 를 선택합니다.

AD/LDAP와의 동기화가 활성화되면 사용자 속성이 이메일 주소를 기반으로 AD/LDAP와 동기화됩니다. 주어진 이메일 주소를 가진 사용자가 AD/LDAP 계정을 가지고 있지 않으면 다음 AD/LDAP 동기화에서 Mattermost에서 비활성화됩니다.

계정을 다시 활성화하려면:

  1. 사용자를 AD/LDAP 서버에 추가합니다.

  2. System Console > Environment > Web Server 로 이동한 다음 Purge All Caches 를 선택하여 Mattermost의 모든 캐시를 삭제합니다.

  3. System Console > Authentication > AD/LDAP 로 이동한 다음 AD/LDAP Synchronize Now 를 선택하여 AD/LDAP 동기화를 실행합니다.

  4. System Console > Environment > Web Server 로 이동한 다음 Purge All Caches 를 다시 선택하여 Mattermost의 모든 캐시를 다시 삭제합니다. 이렇게 하면 Mattermost에서 계정이 다시 활성화됩니다.

참고

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

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

참고

AD/LDAP와의 SAML 동기화는 인증을 제어하기 위한 것이 아니라 이름과 성과 같은 사용자 속성을 AD/LDAP에서 가져오도록 설계되었습니다.

특히 사용자 필터는 Mattermost에 로그인할 수 있는 사용자를 제어하는 데 사용할 수 없으며, 이는 SAML 서비스 제공업체의 그룹 권한으로 제어해야 합니다.

자세한 내용은 technical description of SAML synchronization with AD/LDAP 를 참조하세요.

AD/LDAP 데이터로 SAML 데이터 덮어쓰기#

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

이 프로세스는 SAML 이메일 주소를 AD/LDAP 이메일 주소 데이터로 덮어쓰거나, 구성된 경우 SAML ID 속성을 AD/LDAP ID 속성으로 덮어씁니다. 사용자의 이메일 주소가 변경될 때 새 사용자가 생성되지 않도록 하기 위해 SAML ID 속성과 함께 이 구성을 사용하는 것이 좋습니다.

이 프로세스에서 기존 사용자 계정이 비활성화되지 않도록 하려면 두 시스템에서 데이터를 내보내고 ID 데이터를 비교하여 SAML ID가 LDAP ID와 일치하는지 확인하세요. Mattermost 내에서 AD/LDAP와 SAML 모두에 대해 동일한 데이터를 보유하는 필드에 ID 속성을 매핑하면 ID가 일치하는지 확인할 수 있습니다.

  1. System Console > Authentication > SAML 2.0 > Id Attribute 로 이동하여 SAML Id Attribute 를 설정합니다.

  2. System Console > Authentication > SAML 2.0 > Override SAML bind data with AD/LDAP informationtrue 로 설정합니다.

  3. System Console > Authentication > SAML 2.0 > Enable Synchronizing SAML Accounts With AD/LDAPtrue 로 설정합니다.

  4. System Console > Authentication > AD/LDAP 로 이동한 다음 AD/LDAP Synchronize Now 를 선택하여 AD/LDAP 동기화를 실행합니다.

자주 묻는 질문#

이메일 대신 ID 속성으로 인증을 바인딩하는 방법#

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

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

이 프로세스는 이메일 바인딩과의 이전 버전 호환성을 고려하여 설계되었습니다. 다음은 새 계정 생성 및 구성 후 로그인하는 계정에 적용되는 프로세스입니다:

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

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

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

  • 해당 ID에 바인딩된 사용자가 존재하지 않는 경우, 이메일을 기준으로 검색합니다.

  • 이메일에 바인딩된 사용자가 존재하는 경우, 이메일로 로그인하고 인증 데이터를 이메일 대신 ID로 업데이트합니다.

  • ID 또는 이메일에 바인딩된 사용자가 존재하지 않는 경우, ID로 SAML 계정에 바인딩된 새 Mattermost 계정을 생성하고 사용자가 로그인할 수 있도록 합니다.

참고

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

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

네. IWA는 브라우저에서 지원되며, 2019년 2분기(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와 유사하지만 주로 기업 환경에서 사용됩니다. OpenID Connect는 소비자 웹사이트와 웹/모바일 앱에서 더 일반적으로 사용됩니다.

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