원본간 리소스 공유에 OAuth를 사용하여 Microsoft Dynamics 365에 단일 페이지 응용 프로그램 연결

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics CRM Online 2016 업데이트 및 Microsoft Dynamics 365 온-프레미스에서 인터넷 연결 배포(IFD)를 사용하여 Microsoft Dynamics 365 데이터 작업을 위해 JavaScript를 사용하는 단일 페이지 앱(SPA)을 만들 수 있습니다. 이를 제공하기 위해 SPA가 일반적으로 도메인 경계 교차 요청을 방지하는 브라우저 제한 사항을 무시할 수 있도록 원본 간 리소스 공유(CORS)를 활성화해야 합니다.

참고

CORS 지원은 웹 API를 사용하는 경우에만 제공됩니다. 조직 서비스 또는 사용되지 않는 조직 데이터 서비스를 사용할 수 없습니다.

이 항목의 내용

SPA 및 동일한 원본 정책

Microsoft Dynamics 365(온라인)에서 CORS 사용

adal.js 작동 방법

SPA에 ADAL.js 사용 준비

SPA 및 동일한 원본 정책

새 페이지를 로드할 필요가 없는 단일 동적 페이지를 만들 때 SPA는 클라이언트 쪽 JavaScript의 광범위한 사용에 따라 다릅니다. 대신 서버에서 데이터 및 기타 리소스를 검색하기 위해 XMLHTTPRequest를 사용합니다. SPA는 데이터와 리소스가 응용 프로그램으로서 같은 도메인에 존재하는 경우에 잘 작동합니다. 그러나 다른 도메인에 있는 데이터와 리소스에 대한 액세스를 보호하기 위해 모든 최신 브라우저는 사이트에서 다른 도메인의 사이트가 데이터와 리소스를 사용하지 못하도록 하는 동일한 원본 정책을 적용합니다. CORS는 다른 도메인의 리소스에 액세스할 수 있는 방법을 제공합니다. CORS 없이 Microsoft Dynamics 365 데이터에 액세스하는 SPA를 만들 수 없습니다.

Microsoft Dynamics 365(온라인)에서 CORS 사용

The 원본 간 리소스 공유 사양은 CORS를 구현하고 사용하는 방법에 대한 자세한 설명을 제공합니다. 다양한 헤더에 대해 설명하고 CORS이 작동하도록 하기 위해 적용해야 할 요청을 시험해 봅니다. 좋은 소식은 Microsoft Dynamics 365에서 CORS를 사용하기 위해 전문 지식이 필요가 없다는 점입니다. 서버 쪽 부분이 이미 완벽하게 처리되어 사용하는 방법만 알면 됩니다.Microsoft Dynamics 365에서 사용하기 위해 모든 CORS의 내부 작동을 이해하지 않아도 됩니다. 대신 복잡한 CORS 작업의 대부분을 대신 처리해주는 JavaScript용 Azure Active Directory Authentication Library(adal.js)를 사용할 수 있습니다.Dynamics 365(온라인) 및 인터넷 연결 배포(IFD) 사용자는 Azure Active Directory를 사용하여 인증을 받았기 때문에 ADAL.js가 SPA 사용자 인증에 지원됩니다.

adal.js 작동 방법

코어 라이브러리는 adal.js입니다. You can access the minimized version of this library at https://secure.aadcdn.microsoftonline-p.com/lib/1.0.0/js/adal.min.js에서 이 라이브러리의 최소화된 버전에 액세스할 수 있습니다. Github 프로젝트와 설명서는 https://github.com/AzureAD/azure-activedirectory-library-for-js에서 제공됩니다.

adal.js 라이브러리에는 OAuth2를 사용하여 인증하는 낮은 수준의 기능이 포함되어 있습니다. adal.js는 다른 프레임 워크에 사용할 수 있도록 설계되었습니다. 예를 들어, adal-angular.js 라이브러리는 Angular 프레임워크에서 사용할 수 있도록 설계되었습니다. 이 라이브러리를 사용하는 방법은 특정 구성 속성으로 설정하고 상호 작용 흐름을 트리거하는 이벤트가 발생할 때까지 대기합니다. 이렇게 간단하게 login 기능을 호출할 수 있으며 또는 응용 프로그램에서 라우팅 동작을 하는 경우 해당 경로에 대한 컨트롤러를 구성하여 인증을 시작할 수 있습니다.

인증이 필요한 경우 엔터티 자격 증명을 할 수 있는 로그인 페이지로 이동됩니다. 성공적으로 인증하고 나면 URL 조각(# 사용)으로 첨부된 토큰 정보를 가진 호출 페이지로 리디렉션됩니다. 그러면 SPA이 토큰을 획득하고 브라우저의 로컬 또는 세션 저장소에 캐싱할 수 있습니다. 인증을 받은 후 전체 페이지가 다시 로드되지만 이번에는 인증된 사용자에 대한 정보가 제공되며 응용 프로그램에서 Dynamics 365 웹 API 또는 기타 리소스를 호출하는 작업을 진행할 수 있습니다.

Dynamics 365 웹 API를 호출할 때 XMLHTPPRequest의 Authorization 헤더에 토큰 값을 포함해야 합니다. 그러나 토큰은 만료 기한이 있기 때문에 사용자들이 SPA를 사용하는 동안 만료되지 않도록 주의하십시오. 새 자격 증명을 입력하려면 SPA 페이지의 전체 내용이 로그인 페이지에 전송되는 것을 기억하십시오. 이 동작이 사용자들이 작업하는 도중에 발생하는 경우 사용자 경험을 매우 저하시킬 수 있습니다. 이러한 상황이 발생하지 않도록 acquireToken 함수 내에 웹 API 호출을 래핑하여 토큰의 유효성을 확인하고 필요하면 사용자가 로그인하지 않고 새로 고칠 수 있습니다.

SPA에 ADAL.js 사용 준비

Adal.js를 사용할 수 있도록 SPA를 구성하기 위해 다음이 필요합니다.

  1. Azure Active Directory 테넌트를 사용하여 응용 프로그램 등록

  2. 등록된 응용 프로그램 매니페스트를 내보내고 OAuth2 암시적 흐름을 허용하도록 편집한 후 등록 JSON 파일을 다시 응용 프로그램으로 가져옵니다.

  3. 해당 등록 정보를 가진 SPA에서 구성 변수를 설정합니다.

    다음을 포함해야 합니다.

    • Microsoft Dynamics 365 조직의 URL

    • 인증을 위해 조직에서 사용하는 Active Directory 테넌트의 이름

    • 응용 프로그램을 등록할 때 얻는 클라이언트 ID

    • 개발 중에 SPA가 배포되거나 디버깅되는 URL

필요한 수행 단계는 연습: adal.js를 사용하여 SimpleSPA 응용 프로그램 등록 및 구성을 참조하십시오.

참고 항목

Microsoft Dynamics 365에서 사용자 인증
OAuth를 사용하여 Microsoft Dynamics 365 웹 서비스에 연결
Active Directory 및 클레임 기반 인증

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보