OAuth 구성 및 로드
타사 서비스 또는 유틸리티에 대한 OAuth 커넥터를 만들기 전에 해당 OAuth 공급자를 ThingWorx Flow 서버에 로드해야 합니다. 샘플 OAuth 구성 JSON 파일 템플릿은 ThingWorx Composer에 있는 WorkflowSubsystem에 대한 LoadOAuthConfiguration 서비스의 oauthConfigurations 매개 변수에서 사용할 수 있습니다. 다음은 OAuth를 로드하는 프로세스에 대한 상세 개요입니다.
1. 타사 시스템에서 응용 프로그램을 만듭니다.
2. 응용 프로그램에서 클라이언트 ID-클라이언트 보안 쌍을 검색하고 샘플 OAuth 구성 JSON 파일에 추가합니다. OAuth 구성에 필요한 추가 매개 변수의 값을 추가합니다.
타사 서비스 또는 유틸리티에 대한 OAuth 설정을 제거하려면 전체 JSON 객체를 제거해야 합니다. 예를 들어, Gmail에 대한 OAuth 설정을 제거하려면 다음 JSON 객체를 제거합니다.
"google_gmail": {
"Gmail": {
"CLIENT_ID": "<Client ID>"
"CLIENT_SECRET": "<Secret>"
}
},
타사 서비스 또는 유틸리티에 대한 JSON 객체를 제거하고 나중에 해당 OAuth 설정을 추가하려는 경우 샘플 OAuth 구성 JSON 파일 템플릿에서 JSON 코드 조각을 추가하고 OAuth 구성에 필요한 값을 제공합니다.
* 
샘플 구성 파일에는 타사 서비스 또는 유틸리티를 나타내는 커넥터 구성 값이 포함되어 있습니다. 예를 들어, Gmail의 경우 JSON 객체에서 google_gmail을 수정하지 마십시오. Gmail에 대해 여러 OAuth 공급자(예: Gmail-1 및 Gmail-2)를 추가하려면 다음 JSON 객체를 샘플 파일에 추가합니다.
{
"google_gmail": {
"Gmail-1": {
"CLIENT_ID": "<client id for Gmail - 1 account here>",
"CLIENT_SECRET": "<client secret for Gmail - 1 account here>"
},
"Gmail-2": {
"CLIENT_ID": "<client id for Gmail - 2 account here>",
"CLIENT_SECRET": "<client secret for Gmail - 2 account here>"
}
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
ThingWorx Flow에서는 다음 서비스 및 유틸리티에 대해 OAuth를 지원합니다.
Azure
Bitly
Box
Github
Gitlab
Gmail
HTTP
JIRA
OData
OSLC
SOAP
Slack
Trello
서비스 및 유틸리티에 대한 OAuth 구성 및 로드
Azure
Azure 응용 프로그램에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Azure 응용 프로그램을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
API 권한 - Azure 서비스 관리입니다.
리디렉션 URI - ThingWorx Flow 반환 URL을 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 입력합니다.
2. Azure용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Azure 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Azure 응용 프로그램에서 값을 검색합니다.
"azure": {
"Azure": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Bitly
Bitly 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Bitly 앱을 만듭니다.
이 앱을 만드는 동안 리디렉션 URI를 ThingWorx Flow 반환 URL에 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 설정합니다.
2. Bitly용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Bitly 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Bitly 앱에서 값을 검색합니다.
"bitly": {
"Bitly": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Box
Box 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Box 앱을 만듭니다.
이 앱을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
응용 프로그램 범위 - 모든 범위를 선택합니다.
리디렉션 URI - ThingWorx Flow 반환 URL을 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 입력합니다.
다음 비디오에서는 Box에 대한 OAuth 구성을 활성화하는 데 필요한 단계를 보여줍니다.
2. Box용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Box 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Box 앱에서 값을 검색합니다.
"box": {
"Box": {
"CLIENT_SECRET": "client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Dialogflow
Dialogflow 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
앱을 만드는 동안 리디렉션 URI를 ThingWorx Flow 반환 URL로 제공합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
Dialogflow 앱용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Google 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Google 앱에서 값을 검색합니다.
"apiai": {
"Dialogflow": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
2. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Dropbox
Dropbox 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Dropbox 앱을 만듭니다. 이 링크는 Dropbox OAuth에 대한 정보를 제공합니다.
이 앱을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
API - Dropbox API를 선택합니다.
액세스 유형 - 전체 Dropbox입니다.
리디렉션 URI - ThingWorx Flow 반환 URL을 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 입력합니다.
2. Dropbox용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Dropbox 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Dropbox 앱에서 값을 검색합니다.
"dropbox": {
"Dropbox": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Dynamics 365 CRM
Dynamics 365 CRM 응용 프로그램에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
이 앱을 만드는 동안 리디렉션 URI를 ThingWorx Flow 반환 URL에 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 설정합니다.
2. Dynamics 365 CRM용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Azure 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Azure 응용 프로그램에서 값을 검색합니다.
"dynamics365": {
"Dynamics365": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Excel Online, Office 365, OneDrive
Excel Online, Office 365 또는 OneDrive 응용 프로그램에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Azure 응용 프로그램을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
API 권한 - Azure 서비스 관리입니다.
리디렉션 URI - ThingWorx Flow 반환 URL을 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 입력합니다.
2. Excel Online, Office 365 또는 OneDrive용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Azure 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Azure 응용 프로그램에서 값을 검색합니다.
Excel Online
"excel": {
"Excel Online": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Office 365
"microsoft_365": {
"Office 365": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
OneDrive
"onedrive": {
"OneDrive": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Github
GitHub 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Github OAuth 앱을 만듭니다.
이 앱을 만드는 동안 승인 콜백 URL을 ThingWorx Flow 반환 URL에 https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return 형식으로 설정합니다.
2. Github용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Github 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Github 앱에서 값을 검색합니다.
"github": {
"Github": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Gitlab
Gitlab 응용 프로그램에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. GitLab 응용 프로그램을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - api, read_user, read_repository, read_registry입니다.
리디렉션 URI - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. Gitlab용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Gitlab 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Gitlab 응용 프로그램에서 값을 검색합니다.
"gitlab": {
"Gitlab": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Gmail, Google Drive, Google Forms, Google Sheets, Google Tasks, Google Translator, YouTube
Google 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
앱을 만드는 동안 리디렉션 URI를 ThingWorx Flow 반환 URL로 제공합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
Google 앱용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Google 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Google 앱에서 값을 검색합니다.
Gmail
"google_gmail": {
"Gmail": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Google Drive
"google_drive": {
"Google Drive": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Google Form
"google_form": {
"Google Form": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Google Sheet
"google_sheet": {
"Google Sheet": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Google Task
"google_task": {
"Google Tasks": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Google Translator
"google_translator": {
"Google Translator": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
Youtube
"youtube": {
"Youtube": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
2. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
HTTP
HTTP 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. HTTP 서버에서 OAuth를 구성합니다.
2. HTTP 서버용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
AUTH_URL
[필수]
토큰 요청에 대한 OAuth 끝점을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
예: \authorize
TOKEN_URL
[필수]
액세스 토큰을 제공합니다.
OAuth 클라이언트에서 값을 검색합니다.
예: \token
VALIDATE_URL
[필수]
액세스 토큰의 유효성을 검사하는 데 사용되는 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
VALIDATE_URL을 원하지 않을 경우 액세스 가능한 서버 URL을 제공합니다.
예: https://www.dropbox.com/
VALIDATE_URL을 구현하려면 get 메서드를 사용하여 API를 만듭니다.
REFRESH_URL
액세스 토큰을 얻는 데 사용할 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
예: \token
SCOPE
[필수]
응용 프로그램에 대해 공백으로 구분된 범위 목록을 제공합니다.
<범위 1> <범위 2>
BASE_URL
[필수]
중앙 승인 서버 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
NEED_RESOURCE_URL
[필수]
사용자가 OAuth 커넥터를 추가하는 동안 RESOURCE_URL을 제공해야 하는지 여부를 지정합니다.
이를 True로 설정하면 OAuth 공급자를 추가하는 동안 RESOURCE_URL의 값을 지정해야 합니다.
이를 False로 설정하면 사용자가 OAuth 커넥터를 추가하는 동안 RESOURCE_URL의 값을 지정해야 합니다.
true 또는 false
RESOURCE_URL
리소스 서버 URL을 지정합니다.
-
CLIENT_ID
[필수]
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
[필수]
클라이언트 보안 값입니다.
OAuth 클라이언트에서 값을 검색합니다.
"devtools": {
"HTTP": {
"AUTH_URL": "<auth url here>",
"CLIENT_SECRET": "<client secret here>",
"TOKEN_URL": "<token url here>",
"VALIDATE_URL": "<validate url here>",
"CLIENT_ID": "<client id here>",
"SCOPE": "<scopes separated by spaces>",
"RESOURCE_URL": "<resource url here>",
"BASE_URL": "<base url here>",
"REFRESH_URL": "<refresh url here>",
"NEED_RESOURCE_URL": "<boolean value here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
JIRA
JIRA 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. JIRA 앱을 만듭니다.
이 앱을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - view Jira issue data (read:jira-work), create and manage issues (write:jira-work), view user profiles (read:jira-user)
콜백 URL - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. JIRA용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
JIRA 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
JIRA 앱에서 값을 검색합니다.
"jira": {
"JIRA": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
OData
OData 인스턴스에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. OData 인스턴스에 OAuth를 구성합니다.
2. OAuth 구성에 따라 OAuth 구성 JSON 파일에 값을 제공합니다. 샘플 config.json을 참조하십시오. 다음은 OAuth를 로드하기 위해 제공할 수 있는 예제 값입니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
OAuth 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
OAuth 응용 프로그램에서 값을 검색합니다.
VALIDATE_URL
액세스 토큰의 유효성을 검사하는 데 사용되는 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
REFRESH_URL
액세스 토큰을 얻는 데 사용할 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
TOKEN_URL
액세스 토큰을 제공합니다.
OAuth 클라이언트에서 값을 검색합니다.
AUTH_URL
토큰 요청에 대한 OAuth 끝점을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
{
"name": "odata",
"created_at": "2017-02-27T09:26:46.890Z",
"updated_at": "2017-02-27T09:26:46.890Z",
"uid": "oaufe1978bc9e71d999ef2ba4",
"icon": "odata",
"version": "v1",
"__v": 0,
"title": "Dynamics 365",
"oauth2_include": [
"{\"resource\":\"{resource}\"}"
],
"oauth2_required": [
{
"title": "Tenant ID",
"id": "tenant",
"default": "common",
"description": "Enter Dynamics 365 tenant id, leave it common if you don't have it"
},
{
"title": "Resource URL",
"id": "resource",
"description": "Enter Dynamics 365 resource URL, eg: https://example.crm5.dynamics.com"
}
],
"oauth2_params_scope": [
"{\"user_impersonation\":\"User Impersonation\"}"
],

"oauth2_refresh_data": [
"{\"client_secret\":\"{client_secret}\"}",
"{\"grant_type\":\"refresh_token\"}",
"{\"client_id\":\"{client_id}\"}",
"{\"resource\":\"{resource}\"}",
"{\"refresh_token\":\"{refresh_token}\"}"
],
"oauth2_refresh_url": "/token",
"oauth2_token_data": [
"{\"redirect_uri\":\"{redirect_uri}\"}",
"{\"client_id\":\"{client_id}\"}",
"{\"client_secret\":\"{client_secret}\"}",
"{\"resource\":\"{resource}\"}",
"{\"grant_type\":\"authorization_code\"}"
],
"oauth2_token_url": "/token",
"oauth2_auth_query": [
"{\"client_id\":\"{client_id}\"}",
"{\"response_type\":\"code\"}",
"{\"resource\":\"{resource}\"}",
"{\"scope\":\"{scope}\"}",
"{\"prompt\":\"login\"}",
"{\"redirect_uri\":\"{redirect_uri}\"}"
],
"oauth2_auth_url": "/authorize",
"oauth2_no_state": false,
"env_pre_prod_params": [
"{\"client_secret\":\"{{{pre_prod.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_production_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{production.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{production.CLIENT_SECRET}}}\"}"
],
"env_staging_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{staging.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{staging.CLIENT_SECRET}}}\"}"
],
"env_development_params": [
"{\"client_id\":\"{{{development.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{development.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_local_params": [
"{\"client_id\":\"{{{local.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{local.CLIENT_SECRET}}}\"}",
],
"base_url": "https://login.microsoftonline.com/{tenant}/oauth2",
"oauth_type": "OAuth2",
"development_phase": "new",
"advanced_enabled": true,
"express_enabled": true,
"deleted_at": null,
"published": true
}
샘플 배열과 같이 "oauth2_validate_headers" 배열에 머리글 정보를 제공합니다.
{
"oauth2_validate_headers": [
"{\"Authorization\":\"Bearer {access_token}\"}",
"{\"Content-Type\":\"application/json\"}"
]
}
샘플 배열과 같이 "oauth2_params_scope" 배열에 범위 정보를 제공합니다.
{
"oauth2_params_scope": [
"{\"READ\":\"READ_PRIVILEGES\"}"
]
}
샘플 배열과 같이 "oauth2_params_other" 배열에 needurl 정보를 제공합니다.
{
"oauth2_params_other": [
"{\"needurl\":\"true\"}"
]
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
OSLC
OSLC 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
2. OSLC용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
OAuth 클라이언트에서 값을 검색합니다.
BASE_URL
OAuth URL을 지정합니다.
중앙 인증 서버에서 값을 검색합니다.
OAuth 클라이언트가 PingFederate인 경우 이 URL은 다음 형식이어야 합니다.
https://<Pingfederate FQDN>:<포트>/as
VALIDATE_URL
액세스 토큰의 유효성을 검사하는 데 사용되는 URL을 지정합니다.
중앙 인증 서버에서 값을 검색합니다.
예: /introspect.oauth2
RESOURCE_URL
OSLC 서버 URL을 지정합니다.
RESOURCE_URL을 지정하지 않으면 OAUTH_URL, REFRESH_URLTOKEN_URL에 대한 값을 제공해야 합니다.
중앙 인증 서버에서 값을 검색합니다.
OAUTH_URL
토큰 요청에 대한 OAuth 끝점을 지정합니다.
중앙 인증 서버에서 값을 검색합니다.
예: /authorization.oauth2
REFRESH_URL
액세스 토큰을 얻는 데 사용할 URL을 지정합니다.
중앙 인증 서버에서 값을 검색합니다.
예: /token.oauth2
TOKEN_URL
액세스 토큰을 제공합니다.
중앙 인증 서버에서 값을 검색합니다.
예: /token.oauth2
"oslc": {
"OSLC": {
"CLIENT_SECRET": "<client secret here>",
"OAUTH_URL": "<oauth url here>",
"VALIDATE_URL": "<validate url here>",
"VALIDATE_AUTH": "<stringified validate auth object here in format <auth>:<authObject>, authObject should be a stringified json object>",
"TOKEN_URL": "<token url here>",
"CLIENT_ID": "client id here>",
"RESOURCE_URL": "<resource url here>",
"VALIDATE_QUERY": "<stringified validate query object here in format <token>:<access_token>",
"BASE_URL": "<base url here>",
"VALIDATE_METHOD": "<validate method here>",
"REFRESH_URL": "<refresh url here>"
}
}
* 
RESOURCE_URL 또는 승인 매개 변수(OAUTH_URL, REFRESH_URLTOKEN_URL)를 지정해야 합니다.
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
SAP OData
SAP OData 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
OAuth를 구성하는 동안 리디렉션 URI를 ThingWorx Flow 반환 URL로 제공합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. SAP OData용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
SAP OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
SAP OAuth 클라이언트에서 값을 검색합니다.
BASE_URL
중앙 승인 서버 URL을 지정합니다.
https://<호스트 이름:포트>/sap/bc/sec/oauth2
SCOPE
공백으로 구분된 범위 목록입니다. 자세한 내용은 OAuth 범위를 참조하십시오.
<범위 1> <범위 2>
RESOURCE_URL
SAP 리소스 URL을 지정합니다.
OAuth를 구성하는 동안 RESOURCE_URL을 제공하는 것이 좋습니다. RESOURCE_URL을 지정하지 않으면 OAuth 커넥터를 추가하는 동안 사용자가 이를 제공해야 합니다.
https://<호스트:포트>/
"sap_odata": {
"SAP_OData": {
"CONNECTION_URL": "<SAP OData url in format https://<host>:<port>/>",
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>",
"SCOPE": "<scopes separated by space>",
"BASE_URL": "<SAP OAuth url in format https://<host>:<port>/sap/bc/sec/oauth2>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
SOAP
SOAP 인스턴스에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. SOAP 인스턴스에 OAuth를 구성합니다.
2. OAuth 구성에 따라 OAuth 구성 JSON 파일에 값을 제공합니다. 샘플 config.json을 참조하십시오. 다음은 OAuth를 로드하기 위해 제공할 수 있는 예제 값입니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
OAuth 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
OAuth 응용 프로그램에서 값을 검색합니다.
VALIDATE_URL
액세스 토큰의 유효성을 검사하는 데 사용되는 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
REFRESH_URL
액세스 토큰을 얻는 데 사용할 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
TOKEN_URL
액세스 토큰을 제공합니다.
OAuth 클라이언트에서 값을 검색합니다.
AUTH_URL
토큰 요청에 대한 OAuth 끝점을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
샘플 배열과 같이 "oauth2_validate_headers" 배열에 머리글 정보를 제공합니다.
{
"oauth2_validate_headers": [
"{\"Authorization\":\"Bearer {access_token}\"}",
"{\"Content-Type\":\"application/json\"}"
]
}
샘플 배열과 같이 "oauth2_params_scope" 배열에 범위 정보를 제공합니다.
{
"oauth2_params_scope": [
"{\"READ\":\"READ_PRIVILEGES\"}"
]
}
샘플 배열과 같이 "oauth2_params_other" 배열에 needurl 정보를 제공합니다.
{
"oauth2_params_other": [
"{\"needurl\":\"true\"}"
]
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Salesforce
Salesforce 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Salesforce 앱을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - 응용 프로그램에 적합한 범위를 제공합니다.
콜백 URL - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. Salesforce용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Salesforce 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Salesforce 앱에서 값을 검색합니다.
"salesforce": {
"Salesforce": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
다음 비디오에서는 Salesforce에 대한 OAuth 구성을 활성화하는 데 필요한 단계를 보여줍니다.
ServiceMax
ServiceMax 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. ServiceMax에 로그인한 후 ServiceMax 앱을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - 응용 프로그램에 적합한 범위를 제공합니다.
콜백 URL - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. Servicemax용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Servicemax 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Servicemax 앱에서 값을 검색합니다.
"servicemax": {
"Servicemax": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Slack
Slack 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Slack 앱을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - 응용 프로그램에 적합한 범위를 제공합니다.
리디렉션 URL - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. Slack용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Slack 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Slack 앱에서 값을 검색합니다.
"slack": {
"Slack": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Swagger
Swagger 인스턴스에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Swagger 인스턴스에 OAuth를 구성합니다.
2. OAuth 구성에 따라 OAuth 구성 JSON 파일에 값을 제공합니다. 샘플 config.json을 참조하십시오. 다음은 OAuth를 로드하기 위해 제공할 수 있는 예제 값입니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
OAuth 응용 프로그램에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
OAuth 응용 프로그램에서 값을 검색합니다.
VALIDATE_URL
액세스 토큰의 유효성을 검사하는 데 사용되는 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
REFRESH_URL
액세스 토큰을 얻는 데 사용할 URL을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
TOKEN_URL
액세스 토큰을 제공합니다.
OAuth 클라이언트에서 값을 검색합니다.
AUTH_URL
토큰 요청에 대한 OAuth 끝점을 지정합니다.
OAuth 클라이언트에서 값을 검색합니다.
샘플 배열과 같이 "oauth2_validate_headers" 배열에 머리글 정보를 제공합니다.
{
"oauth2_validate_headers": [
"{\"Authorization\":\"Bearer {access_token}\"}",
"{\"Content-Type\":\"application/json\"}"
]
}
샘플 배열과 같이 "oauth2_params_scope" 배열에 범위 정보를 제공합니다.
{
"oauth2_params_scope": [
"{\"READ\":\"READ_PRIVILEGES\"}"
]
}
샘플 배열과 같이 "oauth2_params_other" 배열에 needurl 정보를 제공합니다.
{
"oauth2_params_other": [
"{\"needurl\":\"true\"}"
]
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
ThingWorx
ThingWorx 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. ThingWorx에서 OAuth2 프로토콜을 통해 요청에 응답할 수 있도록 ThingWorx를 리소스 공급자로 구성합니다.
2. ThingWorx용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
BASE_URL
PingFederate OAuth URL을 지정합니다.
https://<Pingfederate FQDN>:<포트>/as
RESOURCE_URL
ThingWorx URL을 지정합니다.
OAuth를 구성하는 동안 RESOURCE_URL을 제공하는 것이 좋습니다. RESOURCE_URL을 지정하지 않으면 OAuth 커넥터를 추가하는 동안 사용자가 이를 제공해야 합니다.
https://<Thingworx FQDN>:<포트>/Thingworx
"thingworx": {
"Thingworx": {
"CLIENT_SECRET": "client secret here>",
"CLIENT_ID": "client id here>",
"RESOURCE_URL": "<Thingworx URL in format https://<Thingworx FQDN>:<port>/Thingworx>",
"BASE_URL": "<Pingfederate URL in format https://<Pingfederate FQDN>:<port>/as>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Trello
Trello 계정에 대한 OAuth 공급자를 추가할 때마다 다음 단계를 수행합니다.
1. Trello 개발자 계정Trello 계정을 만듭니다.
설정에서 다음 매개 변수의 적절한 값을 설정합니다.
리디렉션 URL - Allowed Origins 아래에 ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
2. Trello용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CONSUMER_KEY
인증 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 소비자 키를 지정합니다.
Trello 개발자 API 키에서 값을 검색합니다.
CONSUMER_SECRET
소비자 보안 값입니다.
Trello 개발자 API 키에서 값을 검색합니다.
"trello": {
"Trello": {
"CONSUMER_SECRET": "<client secret here>",
"CONSUMER_KEY": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Windchill
Windchill 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
2. Windchill용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
BASE_URL
PingFederate OAuth URL을 지정합니다.
https://<Pingfederate FQDN>:<포트>/as
SCOPE
부여된 범위를 기준으로 액세스 토큰을 발급하여 응용 프로그램의 사용자 계정에 대한 액세스를 제한합니다. 여러 범위를 추가하려면 쉼표(,)를 사용하여 범위를 구분합니다.
WINDCHILL_READ, <scope1>, <scope2>
PF_IDP_ADAPTER_ID
선택 사항. 구성에서 PingFederate IdP 어댑터 ID를 지정합니다. PingFederate에 여러 IdP 어댑터가 있는 경우에만 지정합니다.
PingFederateAdapterID
RESOURCE_URL
선택 사항. Windchill URL을 지정합니다.
OAuth를 구성하는 동안 RESOURCE_URL을 제공하는 것이 좋습니다. RESOURCE_URL을 지정하지 않으면 OAuth 커넥터를 추가하는 동안 사용자가 이를 제공해야 합니다.
<프로토콜>://<Windchill FQDN>:<포트>/Windchill
"windchill": {
"Windchill": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>",
"base_url": "<base url here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Windchill RV&S
Windchill RV&S 서버에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
2. Windchill RV&S용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
PingFederate OAuth 클라이언트에서 값을 검색합니다.
BASE_URL
PingFederate OAuth URL을 지정합니다.
https://<Pingfederate FQDN>:<포트>/as
"integrity": {
"integrity": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>",
"base_url": "<base url here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
Zendesk
Zendesk 앱에 대한 OAuth 공급자를 추가하려고 할 때마다 다음 단계를 수행합니다.
1. Zendesk 앱을 만듭니다.
이 응용 프로그램을 만드는 동안 다음 매개 변수에 대해 적절한 값을 설정합니다.
범위 - 응용 프로그램에 적합한 범위를 제공합니다.
리디렉션 URL - ThingWorx Flow 반환 URL을 입력합니다(예: https://<호스트 이름:포트>/Thingworx/Oauths/oauth/return).
다음 비디오에서는 Zendesk에 대한 OAuth 구성을 활성화하는 데 필요한 단계를 보여줍니다.
2. Zendesk용 OAuth 공급자를 추가하려면 OAuth 구성 JSON 파일에 다음 값을 제공합니다.
매개 변수
설명
CLIENT_ID
승인 서버에서 가져온 유효성 검사 액세스 토큰에 사용할 클라이언트 식별자를 지정합니다.
Zendesk 앱에서 값을 검색합니다.
CLIENT_SECRET
클라이언트 보안 값입니다.
Zendesk 앱에서 값을 검색합니다.
"zendesk": {
"Zendesk": {
"CLIENT_SECRET": "<client secret here>",
"CLIENT_ID": "<client id here>"
}
}
3. ThingWorx Composer에서 LoadOAuthConfiguration 서비스를 실행하여 OAuth 공급자를 ThingWorx Flow 서버에 로드합니다.
문제 해결
시나리오
솔루션
OAuth 커넥터가 이름이 동일한 기존 OAuth 공급자를 사용하고 있는 경우 OAuth 공급자를 추가할 수 없습니다.
* 
동일한 JSON 파일에 있는 다른 유효한 어떤 OAuth 공급자도 업로드되지 않습니다.
고유한 OAuth 공급자 이름을 추가한 다음 OAuth 구성을 로드합니다.
예를 들어, Gmail-1이 OAuth 구성에 이미 존재하면 다음 예제 코드에 표시된 대로 Gmail-2를 OAuth 구성에 추가하십시오.
{
"google_gmail": {
"Gmail-1": {
"CLIENT_ID": "<client id for Gmail - 1 account here>",
"CLIENT_SECRET": "<client secret for Gmail - 1 account here>"
},
"Gmail-2": {
"CLIENT_ID": "<client id for Gmail - 2 account here>",
"CLIENT_SECRET": "<client secret for Gmail - 2 account here>"
}
}
}
또는
기존 OAuth 공급자를 사용하는 모든 커넥터를 삭제하고 OAuth 공급자를 다시 업로드한 다음 OAuth 서비스를 재시작합니다.
다음 단계를 완료하여 OAuth 서비스를 재시작합니다.
a. ThingWorx Flow가 설치된 시스템에서 관리자 권한으로 명령 프롬프트를 시작합니다.
b. pm2 ls 명령을 실행하여 OAuth 서비스 번호를 구합니다.
c. pm2 restart <OAuth 서비스 번호> 명령을 실행하여 OAuth 서버를 재시작합니다.
또는
ThingWorx Flow가 설치된 시스템에서 관리자 권한으로 명령 프롬프트를 시작하고 pm2 restart flow-oauth-server 명령을 실행하여 OAuth 서버를 재시작합니다.
도움이 되셨나요?