Okta에서 ThingWorx에 대한 앱 통합 만들기
SAML
1. Okta Admin Console에 로그인합니다.
2. > 으로 이동합니다. 그런 다음 Create App Integration을 클릭합니다.
3. Create a new application integration 창에서 Sign-in method로 SAML 2.0을 선택하고 Next를 클릭합니다.
4. Create SAML Integration 페이지의 General Settings 탭에서 다음 정보를 입력하고 Next를 클릭합니다.
◦ App name - 앱에 이름을 지정합니다(예: ThingworxSAML).
◦ App logo - (선택 사항) 앱의 로고를 추가합니다.
◦ App visibility - 사용자에게 응용 프로그램 아이콘을 표시할지 여부를 선택합니다.
5. Configure SAML 탭에서 다음 정보를 입력하고 선택합니다.
◦ Single Sign On URL - http://<ThingWorx FQDN>:<포트>/Thingworx/saml/SSO를 입력합니다.
| Use this for Recipient URL and Destination URL 확인란을 선택된 상태로 둡니다. |
◦ Audience URI (SP Entry ID) - ThingWorxSP를 입력합니다.
◦ Default RelayState - 비워 둡니다.
◦ Name ID format - Unspecified를 선택합니다.
◦ Application username - Okta username을 선택합니다.
◦ Update application username on - Create and update를 선택합니다.
6. Configure SAML 탭에서 ATTRIBUTE STATEMENTS로 스크롤합니다.
7. Name 필드에 user.firstName을 입력하고 Name format은 Unspecified로 그대로 두고 Value에 user.firstName을 선택합니다. Add Another를 클릭합니다.
8. 새 속성 문 세트의 필드에 user.email을 입력하고 Name 필드의 Name format을 Unspecified로 그대로 두고 Value에 user.email을 선택합니다.
9. Group Attribute Statements (optional)에서 Name 필드에 role을 입력하고 Name format은 Unspecified로 그대로 두고 Starts with에 gr을 입력합니다.
10. Next를 클릭합니다. Feedback 탭에서 Finish를 클릭합니다.
11. 앱 통합이 작성되고 새 응용 프로그램의 Sign On 탭으로 이동합니다.
12. Sign On 탭에서 Metadata URL 아래의 Copy를 클릭하여 새 브라우저 탭에 붙여 넣습니다. 파일의 내용이 표시되면 페이지를 마우스 오른쪽 버튼으로 클릭하고 사용 중인 브라우저에 따라 Save As 또는 Save Page As를 선택합니다. Chrome 또는 Edge를 사용하는 경우 파일이 XML 파일로 다운로드됩니다.
| 출력물을 복사하여 붙여넣기만 하면 서식 문제가 발생할 수 있기 때문에 Save As를 사용해야 합니다. |
13. 사용자 시스템의 ThingworxPlatform 폴더로 이동하고 platform-settings.json 파일을 열어 다음이 아래와 같이 지정되어 있는지 확인합니다.
14. 사용자 시스템의 동일한 ThingworxPlatform 폴더에서 ssoSecurityConfig 폴더를 연 다음 sso-settings.json 파일을 엽니다. BasicSettings에서 다음 구성이 설정되어 있는지 확인합니다.
◦ idpMetadataFilePath - 단계 11에서 복사한 metadata_okta.xml 파일의 경로를 지정합니다.
◦ metadataEntityId - Okta에서 응용 프로그램의 General 탭에 있는 SAML Settings 섹션에서 Audience Restriction 필드의 값(단계 4 참조)을 입력합니다.
◦ samlAssertionUserNameAttributeName - 단계 8에서 만든 속성 문에 있는 user.email 이름을 입력합니다.
15. sso-settings.json 파일에서 enabled 아래의 ApplicationKeySettings 매개 변수가 true로 설정되어 있는지 확인합니다.
16. 그런 다음 sso-settings.json 파일에서 KeyManagerSettings로 스크롤하고 다음 항목이 지정되었는지 확인합니다.
17. sso-settings.json 파일을 저장한 다음 닫습니다.
18. ThingWorx를 다시 시작합니다.
19. 적절한 자격 증명을 사용하여 ThingWorx Composer에 관리자로 로그인하여 Okta 인증이 올바르게 구성되었는지 확인합니다.
20. 로그인에 성공한 후 ThingworxSSOAuthenticator의 구성 탭으로 이동하여 단계 9에서 작성한 그룹 속성에 대한 Groups에 role을 입력합니다.
| 403 App Not Assigned 오류와 함께 로그인 시도가 실패하는 경우 Okta의 ThingWorx 응용 프로그램에 사용자를 할당하고 다시 로그인해 보십시오. |
OAuth 2.0
1. Okta Admin Console에 로그인합니다.
2. > 으로 이동합니다.
3. Create App Integration 창에서 OIDC – OpenID Connect를 선택합니다. 이 옵션을 선택하면 Application type 섹션이 나타납니다. Web Application을 선택하고 Next를 클릭합니다.
4. General Settings에서 다음 정보를 입력한 다음 Save를 클릭합니다.
◦ App name - 앱에 이름을 지정합니다(예: ThingworxResourceProvider).
◦ Logo - (선택 사항) 앱의 로고를 추가합니다.
◦ Proof of possession - 토큰 요청에 DPoP(Demonstrating Proof of Possession) 헤더를 요구할지 여부를 선택합니다.
◦ Grant type - 기본적으로 Client acting on behalf of a user 아래에 Authorization Code 확인란이 선택됩니다.
◦ Sign-in redirect URIs - 사용자의 로그인 리디렉션 URI를 입력합니다. (예: http://localhost:8515/Thingworx/oauth2_authorization_code_redirect)
◦ Assignments - Skip group assignments for now를 선택합니다.
5. 그런 다음 > 로 이동합니다. Authorization Servers 탭에서 default를 클릭합니다.
6. Scopes 탭에서 Add Scope를 클릭합니다. 범위 이름을 THINGWORX로 지정하고 Create를 클릭합니다.
8. 사용자 시스템의 ThingworxPlatform 폴더로 이동하고 resourceServerSettings.json 파일을 엽니다. 다음 값을 지정합니다.
속성 | 값 |
userAuthenticationConverterUserNameAttribute | sub 이 값은 Okta의 default 승인 서버에 생성된 클레임의 이름입니다. 이 값은 > > > > 로 이동하여 찾을 수 있습니다. |
oathTokenEndPoint | 이 값은 Metadata URL의 값 token_endpoint와 동일합니다. 이 값을 찾으려면 Okta Admin Console을 열고 > > > > 로 이동합니다. Metadata URI를 클릭하고 token_endpoint 값을 찾습니다. 다음과 유사한 값입니다. https://<고유 서버 이름>.okta.com/oauth2/default/v1/token |
checkTokenEndpointUrl | 이 값은 Metadata URL의 값 introspection_endpoint와 동일합니다. 이 값을 찾으려면 Okta Admin Console을 열고 > > > > 로 이동합니다. Metadata URI를 클릭하고 introspection_endpoint 값을 찾습니다. 다음과 유사한 값입니다. https://<고유 서버 이름>.okta.com/oauth2/default/v1/introspect |
clientId | 이 값은 Okta의 ThingworxResourceProvider 응용 프로그램에 대한 Client ID 필드와 동일합니다. 이 값을 찾으려면 Okta Admin Console을 열고 왼쪽 탐색 창에서 > 로 이동합니다. ThingworxResourceProvider 응용 프로그램을 클릭합니다. General 탭에서 Client Credentials 아래의 Client ID 필드를 찾습니다. |
clientSecret | 이 값은 Okta의 ThingworxResourceProvider 응용 프로그램에 대한 Client secret 필드와 동일합니다. 이 값을 찾으려면 Okta Admin Console을 열고 왼쪽 탐색 패널에서 Applications를 클릭합니다. ThingworxResourceProvider 응용 프로그램을 클릭합니다. General 탭에서 Client Credentials 아래의 CLIENT SECRETS 섹션을 찾습니다. |