Configuring Single Sign-On (SSO)
Service admin은 ProtoPie Enterprise 환경에서 SSO 사용이 가능하도록 설정할 수 있습니다. SSO를 통해 팀원들은 Okta, Auth0, OneLogin 등 사용하고 있는 Identity Provider(IdP) 인증 시스템으로 ProtoPie에 가입하거나 로그인할 수 있습니다. 이러한 방식으로 회사는 ProtoPie Enterprise에 대한 팀원들의 권한을 한번에 관리할 수 있습니다.
SSO는 유저가 하나의 인증서만으로 다수의 어플리케이션 혹은 웹사이트에 로그인할 수 있는 시스템입니다. 현재 많은 기업들이 편의 및 보안을 위해 SSO를 사용하고 있습니다.
ProtoPie Enterprise에서는 다음 두 가지의 SSO 프로토콜을 지원합니다
- SAML 2.0
- OpenID Connect (OIDC) – on top of OAuth 2.0
Setting Up SAML SSO
SAML 방식에서, ProtoPie는 IdP를 연결하는 service provider (SP) 역할을 합니다.
이를 설정하기 위해서는 ProtoPie를 IdP에 추가하는 작업이 필요합니다. 기본적으로 ProtoPie의 assertion consumer URL (spAcsUrl)을 IdP에, IdP의 IdP Metadata URL을 ProtoPie에 입력해야 합니다.
- Service Admin Settings에서 Authentication 메뉴를 선택합니다.
- Enable SAML을 선택합니다.
- assertion consumer URL (spAcsUrl) 값을 복사합니다.
IdP에 앱을 추가하는 방법은 IdP 마다 다릅니다. 다음 Okta 예시를 참고하십시오.
SAML SSO with Okta
ProtoPie School의 간단한 단계별 비디오 튜토리얼을 따라 Okta와 함께 Single Sign On(SSO)을 설정하세요.
또는 아래의 지침을 따르실 수 있습니다:
- Okta 로그인 후 Applications 페이지로 이동합니다.
- 좌측 상단 Add Application을 클릭합니다.
- 우측 상단 Create New App을 클릭합니다.
- Sign on method 옵션을 SAML 2.0으로 선택한 후 Create를 클릭합니다.
- General Settings에서 App name에 ProtoPie를 입력합니다. 추가적으로 ProtoPie 로고를 업로드할 수도 있습니다. 그 다음 Next를 클릭합니다.
- 다음은 SAML 설정을 위한 몇 가지 사항들입니다.
- Single sign on URL 입력칸과 Audience URI (SP Entity ID) 입력칸에 복사해 둔 assertion consumer URL (spAcsUrl)를 붙여넣기 합니다.
- Name ID format으로 Email Address를 선택합니다.
- Name은 firstName, Value는 user.firstName을 선택합니다.
- 그 다음 Add Another를 클릭합니다. Name은 lastName, Value는 user.lastName을 선택하고 Next를 클릭합니다.
- I'm a software vendor. I'd like to integrate my app with Okta 옵션을 선택하고 Finish 버튼을 클릭합니다.
- Okta의 ProtoPie 앱에 사용자를 등록합니다. ProtoPie Applications 설정으로 들어가서, Assignments 탭의 Assign을 클릭하여 사용자를 등록할 수 있습니다.
- Sign On 탭을 선택한 후, View Setup Instructions를 클릭합니다.
- Identity Provider Single Sign-On URL은 SAML 설정에 필요한 IdP Metadata URL 값입니다. 이 값을 복사해 둡니다.
- Service Admin Settings의 Authentication 메뉴로 돌아갑니다.
- Service Admin Settings의 Authentication 메뉴로 돌아갑니다.
- 복사한 IdP Metadata URL값을 IdP에 입력합니다.
- Update를 클릭합니다.
SAML SSO with Another IdP
IdP로 SAML SSO를 설정하려면, 기본적으로 assertion consumer URL (spAcsUrl)과 IdP Metadata URL이 필요합니다. 위의 Okta 예시를 참고하여 원하는 IdP에 App을 추가할 수 있습니다.
SAML SSO with Azure AD
1. Azure 로그인 후 Azure Active Directory에 접근합니다.
2. 좌측 Enterprise applications 선택.
3. All applications → New application 선택.
4. Azure AD Gallery에서 Azure AD SAML Toolkit을 검색하여 선택하고 생성합니다.
- Name에
ProtoPie
를 입력합니다. 추가적으로 ProtoPie logo를 업로드할 수도 있습니다.
5. Application을 생성한 후에는 아래와 같이 생성된 Application의 Overview를 확인할 수 있습니다. 이후 Getting Started 메뉴를 통해 설정을 마무리할 수 있습니다.
6. Assign users and groups 메뉴를 선택하여 유저 또는 유저 그룹을 설정합니다.
7. Set up single sign on 메뉴를 선택하여 SSO 설정을 시작합니다. 여기서 SAML method를 선택합니다.
8. Basic SAML Configuration Edit을 선택하여 값을 입력합니다. 설정할 값은 아래와 같습니다.
- Identifier (Entity ID):
https://PROTOPIE_DOMAIN/sp
- Reply URL (Assertion Consumer Service URL):
https://PROTOPIE_DOMAIN/api/auth/callback/sso/saml
- 이 값은
ProtoPie Admin Dashboard → Authentication → SAML → Assertion Consumer URL
의 값과 동일합니다.
- 이 값은
- Sign on URL:
https://PROTOPIE_DOMAIN/api/auth/login/sso/saml
9. SAML Signing Certificate의 App Federation Metadata URL
값을 복사합니다.
10. ProtoPie Admin Dashboard의 Authentication → SAML 메뉴에서 SAML을 활성화하고, 아래의 값을 입력합니다.
- Authn Context:
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
- IdP URL (IdP Metadata URL): 위에서 복사한
App Federation Metadata URL
값을 입력합니다.
Setting Up OIDC SSO
OpenID Connect (OIDC)는 OAuth 2.0 체제에서 동작하는 프로토콜입니다.
ProtoPie School의 간단한 단계별 비디오 튜토리얼을 따라 OIDC SSO를 설정하세요.
또는 아래의 지침을 따르실 수 있습니다.
마찬가지로 IdP에 ProtoPie를 추가하는 작업이 필요합니다. 기본적으로 ProtoPie의 callback URL (login Url)을 IdP에, IdP의 authorization URL, token URL, client ID,client secret을 ProtoPie에 입력해야 합니다.
- Service Admin Settings에서 Authentication 메뉴를 선택합니다.
- Enable OIDC를 선택합니다.
- callback URL (loginUrl) 값을 복사합니다.
IdP에 앱을 추가하는 방법은 IdP 마다 다릅니다. 다음 Okta 예시를 참고하십시오.
OIDC SSO with Okta
- Okta 로그인 후 Applications 페이지로 이동합니다.
- 좌측 상단 Add Application을 클릭합니다.
- Okta 로그인 후 Applications 페이지로 이동합니다.
- Sign on method 옵션을 OpenID로 선택한 후 Create를 클릭합니다.
- General Settings에서 App name에 ProtoPie를 입력합니다. 추가적으로 ProtoPie logo를 업로드할 수도 있습니다. 그 다음 Login redirect URIs 칸에 복사해둔 callback URL (loginUrl)을 붙여넣기 하고 Save를 클릭합니다.
- Okta의 ProtoPie 앱에 사용자를 등록합니다. ProtoPie applications 설정으로 들어가서, Assignments 탭의 Assign을 클릭하여 사용자를 등록할 수 있습니다.
- General 탭을 클릭한 후, Client ID와 Client Secret 두 값을 복사해둡니다.
- Sign On 탭을 클릭합니다. authoriztion URL과 Token URL이 필요합니다. 이 두 URL은 IdP 마다 다릅니다. Okta의 경우 각각 {baseUrl}/oauth2/v1/authorize과 ${baseUrl}/oauth2/v1/token형식을 사용합니다. OpenID Connect ID Token 하단 Issuer 값을 base URL로 사용하면 됩니다. 자세한 내용은 다음 링크를 참고해주시길 바랍니다.
- Service Admin Settings의 Authentication 메뉴로 돌아갑니다.
- Enable OIDC가 체크되었는지 확인합니다.
- Authorization URL, token URL, token URL, client ID, client secret값들을 입력합니다.
- Update를 클릭합니다.
OIDC SSO with Another IdP
IdP로 OIDC SSO를 설정하기 위해서는 기본적으로 ProtoPie에서 callback URL (loginUrl), IdP에서 autorization URL, token URL, client ID, client secret 값이 필요합니다. 원하는 IdP의 도큐먼트를 참고하여 app을 추가해 주십시오.
Managing Members
SSO가 설정된 후에도, ProtoPie Enterprise 자체에서 사용자를 관리할 수 있습니다. IdP에서 사용자를 추가하거나 삭제해도 ProtoPie Enterprise에 자동적으로 반영되지는 않습니다. 또한 IdP에서 사용자 이메일 주소를 변경하는 경우, ProtoPie Enterprise에서도 동일한 이메일로 변경해야 같은 사용자로 인식됩니다.
FAQs
Email & Password 대신 SSO만 사용할 수 있나요?
원하시면 두 인증 방식을 선택적으로 사용하실 수 있습니다. 단 모든 인증을 Disable할 수는 없습니다. Email & Password 나 SSO 중 적어도 한 가지 방식은 Enable되어 있어야 합니다.
SSO 인증 방식만 Enable하기 위해서는 설정을 변경할 Service Admin이 SSO 로그인이 가능해야 합니다. 시스템 초기 설정대로 Service Admin이 Email & Password 방식만 설정되어 있는 경우 아래 절차를 참고하세요.
- Service Admin으로 설정할 새로운 유저를 초대
- 해당 유저는 SSO 인증 방식으로 가입
- 초대한 유저를 Service Admin으로 지정
- 해당 유저로 로그인 후 Email & Password 인증 방식을 Disable
- (Optional) 기존 Service Admin의 역할을 member로 변경
멤버 관리는 ProtoPie Enterprise가 아닌 IdP를 이용해야 하나요?
아닙니다. IdP에서 사용자를 추가하거나 삭제해도 ProtoPie Enterprise에 자동적으로 반영되지 않습니다.
IdP에서 이메일 주소를 변경해도 ProtoPie에 로그인 할 수 있나요?
IdP와 ProtoPie Enterprise에 등록된 이메일 주소가 동일해야 같은 사용자로 인식됩니다. 따라서 IdP에서 이메일 주소를 변경할 경우 ProtoPie에서 동일한 이메일로 변경해야 합니다.
Service Admin이 일괄적으로 모든 멤버의 이메일 주소를 변경할 경우, 아래 절차를 참고하세요
- Service Admin 계정을 제외한 모든 이메일 주소를 IdP에서 변경
- Service Admin이 ProtoPie 내 Admin Dashboard에서 모든 이메일 주소들을 변경
- Service Admin이 Account Setting -> Profile 에서 자신의 이메일 주소를 변경
- 변경될 이메일 서비스에 접속하여 수신한 변경 메일을 확인 후, 이메일 주소 변경 완료
중요: Service Admin 또한 SSO 로그인으로 구성되어 있다면, 해당 절차를 수행하고 로그인 하기 전에 IdP에서 이메일 변경.
SSO를 이용해 가입했는데, Email/Password 로 로그인 할 수 있나요?
Email/Password가 Enable 되어 있지 않다면, 이를 이용한 로그인은 불가합니다. Service Admin Settings의 Authentication에서 Email/Password를 Enable한 후 로그인이 가능합니다. 이후에, 멤버들은 Account Settings에서 각자 비밀번호를 설정할 수 있습니다.
ProtoPie에 가입을 했는데, First Name과 Last Name이 IdP와 다릅니다.
SAML 혹은 OIDC를 이용하여 가입 할 때, IdP에 First Name과 Last Name을 자동으로 불러옵니다.
- SAML의 경우, 값이 제대로 나타나지 않으면 IdP의 SAML Setting를 확인해주시길 바랍니다.
- OIDC의 경우, 값이 제대로 나타나지 않으면 IdP에서 확인해주시길 바랍니다.
ProtoPie Enterprise에서 Single Logout(SLO)을 지원하나요?
현재로서는 ProtoPie Enterprise에서 Single Logout (SLO)을 지원하지 않습니다.
Entity ID 값은 무엇인가요?
Entity ID는 SAML Entity, 즉 ID 제공자(IdP) 또는 서비스 제공자(SP)에 대한 전역적으로 고유한 이름입니다. 엔티티 ID는 이름입니다. 확인 가능한 웹 위치일 필요는 없습니다. SAML 엔티티 ID는 URI여야 합니다.
ProtoPie Enterprise에서는 ACS URL과 동일한 값으로 정의되어 있습니다.
- Enterprise Cloud: https://sample.protopie.cloud/api/auth/callback/sso/saml
- Enterprise On-Premise: {PROTOPIE_HOST}/api/auth/callback/sso/saml
Cert data는 어디서 획득하나요?
ProtoPie(SP)에서는 현재 cert data(X.509 cert)를 제공하지 않습니다. 우리 서비스는 IdP에서 제공하는 metadata를 읽은 후 metadata에 X.509 certificate가 존재하는 경우 이를 사용합니다. 없는 경우 ACS URL로 받은 SAML response에서 signature의 X.509 certificate를 획득합니다.
ACS URL은 어디서 획득하나요?
ProtoPie(SP)에서 제공하는 ACS URL은 아래와 같이 Admin Dashboard에서 확인할 수 있습니다: “Assertion Consumer URL”.
AuthnContext (AuthnContextClassRef 와 같이) 무엇인가요?
SAML 요청에서 SP가 IdP에게 특정 인증 메커니즘으로 사용자를 인증하도록 요청하는 수단입니다. 선택사항이며, IdP의 설정 옵션에 따라 다르므로 IdP 관리자의 확인이 필요합니다.
주로 아래와 같은 값들을 사용합니다 (X509, unspecified, …more):
- urn:oasis:names:tc:SAML:2.0:ac:classes:X509
- urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified