Microsoft Dataverse 자격 증명
n8n v2.42요약
Microsoft Dataverse OAuth2 API 자격 증명을 사용하여 Microsoft Dataverse 노드를 인증할 수 있습니다. 이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요. 워크플로에 필요한 테이블 권한만 있는 보안 역할을 사용하세요.
Microsoft Dataverse OAuth2 API 자격 증명을 사용하여 Microsoft Dataverse 노드를 인증할 수 있습니다.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
사전 요구 사항#
- Microsoft Dataverse 환경과 해당 환경 URL.
- Microsoft Entra ID 앱 등록, 또는 앱 등록을 생성할 권한.
- 위임된 액세스를 위한 API 동의를 구성할 권한, 또는 동의를 부여할 수 있는 관리자.
- 위임된 액세스를 위한 적절한 보안 역할이 있는 Dataverse 사용자, 또는 앱 전용 액세스를 위한 애플리케이션 사용자를 생성할 수 있는 관리자.
워크플로에 필요한 테이블 권한만 있는 보안 역할을 사용하세요. 인증이 모든 테이블을 읽거나 변경할 권한을 부여하는 것은 아닙니다.
지원되는 인증 방법#
이 자격 증명은 두 가지 Grant Type 옵션이 있는 OAuth2를 지원합니다.
| 부여 유형 | 액세스 | 요구 사항 |
|---|---|---|
| Authorization Code (기본값) | 로그인한 사용자로서 동작합니다. n8n은 리프레시 토큰을 사용하여 액세스를 갱신합니다. | 웹 리디렉션 URI, 위임된 Dataverse 권한, 환경에 액세스할 수 있는 사용자. |
| Client Credentials | 로그인한 사용자 없이 애플리케이션으로서 동작합니다. n8n은 필요할 때 새 액세스 토큰을 가져옵니다. | 특정 테넌트 ID, 보안 역할이 있는 Dataverse 애플리케이션 사용자. 대화형 로그인이나 리디렉션 URI는 필요하지 않습니다. |
아래 설정은 Client Secret 인증을 사용합니다. 이 자격 증명은 Microsoft OAuth2 자격 증명의 Certificate 인증도 상속합니다. 클라이언트 시크릿 대신 개인 키와 인증서를 구성하려면 인증서로 인증을 참고하세요.
자격 증명 구성#
n8n에서 Microsoft Dataverse OAuth2 API 자격 증명을 생성합니다. 완성된 자격 증명을 연결하거나 저장하기 전에 앱을 등록하고 사용할 부여 유형을 구성합니다.
애플리케이션 등록#
- Microsoft Entra 관리 센터를 열고 App registrations > New registration으로 이동합니다.
n8n Dataverse와 같은 이름을 입력합니다.- 조직에 맞는 지원 계정 유형을 선택합니다. 하나의 테넌트 내에서 액세스하려면 Accounts in this organizational directory only를 선택합니다.
- Authorization Code를 사용하려면 n8n 자격 증명 편집기에서 OAuth Redirect URL을 복사합니다. Redirect URI에서 Web을 선택하고 표시된 그대로 URL을 붙여 넣습니다. Client Credentials의 경우 리디렉션 URI를 비워 둡니다.
- Register를 선택합니다.
- 앱의 Overview에서 Application (client) ID를 n8n의 Client ID에, Directory (tenant) ID를 n8n의 Tenant ID에 복사합니다.
기존 앱의 경우 앱 등록의 Authentication 설정에서 n8n 리디렉션 URL을 Web 리디렉션 URI로 추가합니다.
클라이언트 시크릿 생성#
- 앱 등록에서 Certificates & secrets > Client secrets를 엽니다.
- New client secret을 선택하고 설명을 입력한 다음 조직 정책에 맞는 만료 기간을 선택합니다.
- Add를 선택하고 시크릿의 Secret ID가 아닌 Value를 복사합니다. Microsoft는 이 값을 한 번만 표시합니다.
- n8n에서 Authentication을 Client Secret으로 설정하고 값을 Client Secret에 붙여 넣습니다.
시크릿은 워크플로 필드가 아닌 n8n 자격 증명에 저장하세요. 시크릿을 교체할 때는 이전 시크릿이 만료되기 전에 자격 증명을 업데이트하세요.
환경과 테넌트 설정#
n8n 자격 증명에서 다음 필드를 입력합니다.
| n8n 필드 | 값 |
|---|---|
| Grant Type | 사용자 액세스는 Authorization Code, 앱 전용 액세스는 Client Credentials. |
| Client ID | Entra 앱 등록의 Application (client) ID. |
| Client Secret | Client Secret 인증을 사용할 때 시크릿의 Value. |
| Tenant ID | 앱 등록의 Directory (tenant) ID. Client Credentials에는 테넌트 GUID를 사용합니다. |
| Environment URL | https://contoso.crm.dynamics.com과 같은 환경의 HTTPS 기본 URL. /api/data/v9.2, 테이블 이름 또는 애플리케이션 경로를 덧붙이지 마세요. |
| National Cloud | Dataverse 환경을 호스팅하는 Microsoft 클라우드. 기본값은 **Global (Public Cloud)**입니다. |
환경 URL은 Power Platform 관리 센터의 환경 세부 정보에서 확인할 수 있습니다. 자격 증명은 끝에 붙은 슬래시를 허용하며, 스코프와 요청을 만들 때 제거합니다.
Authorization Code의 경우 Tenant ID에 확인된 테넌트 도메인도 사용할 수 있습니다. 기본값인 common은 멀티 테넌트 Authorization Code 앱용입니다. 단일 테넌트 앱에서는 특정 테넌트 GUID 또는 도메인으로 바꾸세요. Client Credentials에는 common을 사용하지 마세요.
위임된 사용자 액세스 구성#
Authorization Code를 사용하려면 다음을 수행합니다.
- Entra 앱 등록에서 API permissions > Add a permission으로 이동합니다.
- Dynamics CRM > Delegated permissions를 선택하고 user_impersonation을 선택합니다. 이 권한은 Access Dynamics 365 as organization users입니다.
- Add permissions를 선택합니다. 테넌트에서 필요한 경우 관리자에게 동의 부여를 요청합니다.
- 로그인하는 사용자가 Dataverse 환경에 대한 액세스 권한과 필요한 테이블 권한이 있는 보안 역할을 가지고 있는지 확인합니다.
- n8n에서 Grant Type을 Authorization Code로 설정하고, 앱의 Web 리디렉션 URI가 자격 증명 편집기의 OAuth Redirect URL과 일치하는지 확인합니다.
- Connect my account를 선택하고 로그인한 다음, 요청된 액세스를 수락하거나 조직의 승인 절차를 완료합니다.
- 자격 증명을 저장합니다.
위임된 권한 요구 사항은 Microsoft의 Dataverse OAuth 문서를 참고하세요.
앱 전용 액세스 구성#
Client Credentials를 사용하려면 대상 Dataverse 환경에 애플리케이션 사용자를 생성합니다.
- Power Platform 관리 센터에서 Manage > Environments로 이동하여 환경을 선택합니다.
- Settings > Users + permissions > Application users를 엽니다.
- New app user를 선택한 다음 Add an app을 선택합니다. 애플리케이션 ID로 Entra 앱 등록을 찾아 Add를 선택합니다.
- 적절한 Business Unit을 선택하고, 요청되면 이메일 주소를 입력한 다음, 워크플로에 필요한 권한이 있는 보안 역할을 할당합니다.
- Create를 선택하여 애플리케이션 사용자를 생성합니다.
- n8n에서 Grant Type을 Client Credentials로 설정합니다. Tenant ID에 테넌트 GUID를 입력하고 앱 자격 증명, Environment URL, National Cloud를 확인합니다.
- 자격 증명을 저장합니다. 이 흐름에는 대화형 계정 연결 단계가 없습니다.
앱 전용 Dataverse 액세스는 애플리케이션 사용자의 보안 역할을 사용합니다. 위임된 user_impersonation 권한이나 Microsoft Graph 권한은 필요하지 않습니다. 자세한 내용은 Microsoft의 애플리케이션 사용자 설정을 참고하세요.
자격 증명 테스트
자격 증명을 저장하면 n8n은 구성된 환경에 대해 GET /api/data/v9.2/WhoAmI로 자격 증명을 테스트합니다. 액세스 토큰을 받았다는 사실만으로는 애플리케이션 사용자가 존재하거나 Dataverse에 액세스할 수 있다는 것이 증명되지 않습니다. 자격 증명 테스트가 성공해도 모든 테이블 작업에 대한 권한이 보장되는 것은 아닙니다.
국가별 클라우드와 스코프#
National Cloud는 Microsoft Entra 로그인 호스트를 결정합니다. 사용 중인 환경에 맞는 클라우드를 선택합니다.
| 국가별 클라우드 | 로그인 호스트 |
|---|---|
| Global (Public Cloud) | https://login.microsoftonline.com |
| US Government (GCC High) | https://login.microsoftonline.us |
| US Government (DoD) | https://login.microsoftonline.us |
| China (21Vianet) | https://login.partner.microsoftonline.cn |
자격 증명은 National Cloud와 Tenant ID로 인증 및 토큰 URL을 만들고, Environment URL로 스코프를 만듭니다.
- Authorization Code:
<environment-url>/.default offline_access - Client Credentials:
<environment-url>/.default
예를 들어 https://contoso.crm.dynamics.com의 Authorization Code 스코프는 https://contoso.crm.dynamics.com/.default offline_access입니다.
이 URL이나 스코프를 직접 입력할 필요는 없습니다. 노드는 Microsoft Graph가 아닌 Dataverse 환경을 호출하므로, 자격 증명은 Microsoft Graph 기본 URL 필드를 숨깁니다.
일반적인 문제#
리디렉션 URI 불일치#
n8n에서 OAuth Redirect URL을 복사하여 해당 URL을 그대로 Entra에 Web 리디렉션 URI로 등록하세요. 스킴, 호스트, 포트, 경로를 확인하세요. Dataverse 환경 URL로 대체하지 마세요. 리디렉션 URI는 Client Credentials가 아닌 Authorization Code에 적용됩니다.
관리자 승인 필요#
Entra 관리자에게 요청된 위임된 Dataverse 권한을 검토하고 부여하도록 요청하세요. 그런 다음 자격 증명을 다시 연결하세요. Entra 동의와 Dataverse 보안 역할은 별개의 요구 사항입니다. 동의만으로는 사용자에게 환경의 행에 대한 액세스 권한이 부여되지 않습니다.
토큰 요청 실패#
Client ID가 앱 등록에 속하는지, Client Secret에 시크릿 ID가 아닌 현재 시크릿 값이 들어 있는지 확인하세요. Client Credentials의 경우 common을 테넌트 GUID로 바꾸세요. National Cloud가 환경과 일치하고 Environment URL이 환경의 HTTPS 기본 URL인지 확인하세요.
자격 증명 테스트 또는 노드 요청이 액세스 오류를 반환함#
위임된 액세스의 경우 로그인한 사용자가 환경에 액세스할 수 있고 필요한 Dataverse 보안 역할이 있는지 확인하세요.
앱 전용 액세스의 경우 Environment URL과 동일한 환경에 활성 애플리케이션 사용자가 존재하고, Client ID와 동일한 애플리케이션 ID를 사용하며, 필요한 역할이 있는지 확인하세요. 광범위한 관리자 액세스를 할당하는 대신 누락된 권한만 추가하세요.
자격 증명 테스트는 성공하지만 테이블 또는 칼럼 선택기가 실패하면 선택기에 필요한 메타데이터 액세스를 확인하세요. 쓰기가 실패하면 대상 테이블과 관련 행에 대한 권한을 확인하세요.