Okta에서 SCIM 프로비저닝 연동(App Catalog)

Overview {#overview}

Okta의 Applications에서 App Catalog로 SCIM 프로비저닝을 연동하는 방법을 설명한다.

전제 조건 {#prerequisites}

SCIM 프로비저닝은 유료 상품에서만 사용할 수 있다. 무료 상품에서는 사용할 수 없다.

지원 기능 {#supported-features}

아래에 명시된 프로비저닝 기능을 제공한다.

  • Create users
  • Update user properties
  • Deactivate users
  • Import users
  • Create groups with members
  • Update group properties and members
  • Delete groups
  • Import groups

속성 매핑 {#property-mapping}

App Catalog로 LINE WORKS 앱을 생성하면 기본 속성 매핑이 제공된다.
SCIM 프로비저닝 구성을 완료한 후 Provisioning 탭에서 확인할 수 있다.

SCIM userName 속성은 WORKS의 email(계정)과 매핑되고, emails[type eq "alias"].value 속성은 WORKS의 aliasEmails(보조 메일 주소)와 매핑된다.
따라서 이 속성들은 반드시 이메일 형식이어야 하고, 도메인 파트는 WORKS에 등록한 도메인과 일치해야 한다.

Okta User Profile에 설정한 값 중에서 SCIM userName으로 사용할 수 있는 적절한 속성을 선택하거나 식을 작성하여 Custom 값을 사용할 수 있다.
Sign On 탭에서 선택하는 Application username format에 따라 WORKS 계정으로 연동할 값을 지정한다.

  • Custom 선택(권장)
    • 모든 경우에 적용할 수 있다.
    • Okta의 username, email 모두 WORKS의 도메인 파트와 같지 않거나 이메일 형식이 아닌 경우에도 식(toLowerCase(String.substringBefore(user.login, '@')) + "@{domainPart}")을 사용해 설정할 수 있다. 예를 들어 사용 중인 WORKS의 도메인이 'works.com'이라면 toLowerCase(String.substringBefore(user.login, '@')) + "@works.com"을 입력한다.
  • Okta username 선택
    • Okta의 username이 이메일 형식이고, 도메인 파트가 WORKS와 동일한 경우 선택할 수 있다.
    • 단, Okta User Profile에서 Username(user.login)과 Primary email(user.email), Secondary email(user.secondEmail)은 서로 다른 값을 입력하거나 매핑하지 않아야 한다(이메일 중복 이슈).
  • Email 선택
    • Okta User Profile의 Primary email(user.email)의 도메인 파트가 WORKS와 동일한 경우 선택할 수 있다.
    • 단, Primary email(user.email)을 emails[type eq "alias"].value로 매핑하지 않아야 한다(이메일 중복 이슈).

App Catalog의 LINE WORKS 앱에서 제공하는 기본 속성 매핑은 다음과 같다.
Application username format을 Custom 식으로 선택하여 입력하는 것을 가정한다.

기본 속성 매핑을 사용하는 환경에 맞게 수정할 수 있다.
만약 Application username format으로 Email을 선택한다면 보조 이메일을 매핑에서 제거해야 한다.
WORKS에서 제공하는 SCIM 속성 정보와 제약 조건은 속성 매핑을 참고한다.

Okta PropertyWORKS PropertyDescription
username
(Application username format 설정에 따라 다름)
emailWORKS 로그인 계정
(도메인 파트는 WORKS 도메인과 일치해야 한다.)
user.lastNamelastName이름
(성과 이름 중 하나는 반드시 입력해야 한다.)
user.givenNamefirstName성
(성과 이름 중 하나는 반드시 입력해야 한다.)
user.nickNamenickName닉네임
user.preferredLanguagelocale언어
user.timezonetimeZone타임존
user.emailaliasEmails보조 이메일
(도메인 파트는 WORKS 도메인과 일치해야 한다.)
user.secondEmailprivateEmail개인 이메일
user.primaryPhonetelephone사내 전화번호
user.mobilePhonecellPhone휴대폰 번호

설정 단계 {#configuration-step}

Step 1. SCIM App 생성

  1. Okta Admin에서 Applications > Browse App Catalog를 클릭한다.

    scim_okta_create_app_1

  2. 검색 창에 "LINE WORKS"를 입력한 후 클릭한다.

    scim_okta_create_app_2

  3. App Integration 버튼을 클릭한다.

    scim_okta_create_app_3

  4. App 이름을 입력한 후 Done 버튼을 클릭한다.

    scim_okta_create_app_4

Step 2. SCIM 프로비저닝 연동

  1. Sign On 탭에서 Application username format을 설정한다. 이 값은 WORKS의 계정(email)으로 사용되며, 반드시 제약 사항을 준수해야 한다. 속성 매핑을 참고하여 사용 환경에 맞는 적절한 값을 설정한다.

    scim_okta_setting_1

    • Application username format으로 Custom을 선택하고, 아래의 표를 참고하여 식(expression)을 입력하는 것을 권장한다.
      계정 localpart 사용 방식예시
      Okta Login 계정의 앞부분 사용 시
      (권장)
      식: toLowerCase(String.substringBefore(user.login, '@')) + '@{enter your domain}'

      {enter your domain} 부분에는 사용 중인 WORKS의 도메인을 입력한다
      Okta User Profile에 설정한
      Primary email의 localpart 사용 시
      식: toLowerCase(String.substringBefore(user.email, '@')) + '@{enter your domain}'

      {enter your domain} 부분에는 사용 중인 WORKS의 도메인을 입력한다
      Okta User Profile(Default)의
      다른 속성 사용 시
      식: toLowerCase(user.$attribute) + '@{enter your domain}'

      {enter your domain} 부분에는 사용 중인 WORKS의 도메인을 입력한다
      $attribute 부분은 Okta User Profile의 속성에 맞게 수정한다.
  2. Provisioning 탭에서 왼쪽의 Settings > Integration을 클릭하여 이동한다. 그러고 나서 Configure API Integration을 클릭한 후 Enable API integration을 선택한다.

    scim_okta_setting_2

  3. SCIM 전용 Long-Lived Token 발급 방법을 참고하여 Access Token을 획득한다.

  4. 다시 Okta로 돌아와서 API Token에 3에서 획득한 Token을 입력하고, Test API Credentials를 클릭하여 정상적으로 연동되는지 확인한 후 Save를 클릭한다.

    scim_okta_setting_3

Step 3. SCIM 프로비저닝 설정

SCIM 프로비저닝 설정은 Provisioning 탭에서 할 수 있다.

  1. To App에서 Okta→WORKS 사용자 프로비저닝이 발생하는 시점을 설정할 수 있다.

    scim_okta_provisioning_setting_1

    • 원하는 사용자 프로비저닝 이벤트를 활성화한다.
    • 단, Sync Password는 지원하지 않는다. 따라서 Set password when creating new users를 활성화해도 동작하지 않는다.
      SSO를 함께 사용하지 않는다면 비밀번호 등록을 위해 개인 이메일(emails[type eq "other"].value)을 반드시 전달해야 한다.
  2. To App에서 Okta→WORKS 프로비저닝 속성 매핑을 설정할 수 있다.

    scim_okta_provisioning_setting_2

  3. Assignments 탭에서 사용자 Assign으로 프로비저닝 상태를 확인한다.

    scim_okta_provisioning_setting_3

Step 4. [Optional] SAML 2.0 SSO(Single Sign-On) 연동

  1. Sign On 탭에서 연동에 필요한 정보를 얻어서 Developer Console의 SSO > WORKS as SP에 설정한다.

    • Okta에서 Sign on URL의 값을 복사하여 Developer Console의 Web Login URL에 붙여 넣는다.
    • Okta에서 Sign out URL의 값을 복사하여 Developer Console의 Logout URL에 붙여 넣는다.
    • Developer Console에서 User Key를 LINE WORKS Account로 선택한다.
    • Okta에서 Signing Certificate를 다운로드하고 확장자를 .cert에서 .pem으로 변경한 후 Developer Console의 IdP-issued Certificate에 첨부한다(openssl 사용 예시: openssl x509 -inform PEM -in okta.cert -out okta.pem).

    saml_sso_setting_1

    saml_sso_setting_2

  2. Sign On 탭에서 Edit 버튼을 누르고, Advanced Sign-on Settings의 Domain name 항목에 사용 중인 WORKS 도메인을 입력한다.

    saml_sso_setting_3