Sử dụng Azure Active Directory Authentication Library để chứng thực Dynamics 365

Từ phiên bản Dynamics CRM 2016, Microsoft giới thiệu 1 tính năng mới là Web API endpoint, cho phép bạn có thể xây dựng các ứng dụng web application, mobile và kết nối và xử lý dữ liệu Dynamics CRM. Trước khi kết nối bạn cần thực hiện việc authentication. Bài viết này hướng dẫn bạn sử dụng thư viện của Azure Active Directory Authentication Library (ADAL) để lấy token cho việc chức thực trước khi gửi request đến Web API của Dynamics 365.

Bạn có thể xem thêm danh sách mà ADAL hỗ trợ tại đây https://docs.microsoft.com/en-us/azure/active-directory/active-directory-authentication-libraries.

Dynamics CRM Web API có thể được authenticate qua ADAL cũng như Microsoft Graph. Trong bài viết này tôi chỉ giới thiệu với ADAL.

Đăng kí application trên Azure AD

Bất cứ application nào cần sử dụng Azure AD cũng cần được đăng kí (register) trên Azure AD tenant đó. Trong suốt quy trình đăng kí, Azure AD sẽ cần 1 số thông tin từ application của bạn, ví dụ application URL, callback URL sau khi user được authenticate.

Bước 1: Đầu tiên bạn cần access vào Azure portal bằng tài khoản administrator. Click Azure Active Directory bên trái.

adal_crm01

Bước 2: click App registrations, click Add. Bạn cần nhập thông tin application, loại application (Application Type), tôi nhập Web app / API. Nhập Sign-in URL. Ở đây vì tôi build application ở local nên sẽ như URL http://localhost:61950/Portal/Sample.html

adal_crm02

Bước 3: Sau khi bạn register xong application của bạn. Chọn application và download file Manifestvề. Mở file này lên và thay đổi thông số ở biến oauth2AllowImplicitFlow thành true. Sau đó upload file lên application của bạn.

adal_crm03

Bước 4: bạn cần add permission của user để access vào Dynamics CRM app. Click Require permissions > Add > Select an API  > Dynamics CRM Online.

adal_crm04

Bước 5: Click Select permission chọn DELEGATED PERMISSIONSAccess CRM Online as organization users.

adal_crm05

Sử dụng ADAL để authenticate

Dựa trên thư viện https://github.com/Scaleable-solutions/WebAPIAuthFromJavaScript tôi có chỉnh sửa và fix 1 số lỗi liên quan đến việc mất cookie và token bị expire. Bạn cần update thông số cho application của bạn trước khi sử dụng Dynamics 365 Web API.

var organizationURI = "https://<ORG_NAME>.api.crm5.dynamics.com"; // TODO: Add your organizationURI
var tenant = "b5101e80-6255-4e07-afed-380b2d3bdd51"; // TODO: add your tenant
var clientId = "30156abc-cc53-468f-a1ca-972e1c3b02d6"; // TODO: Add your Client Id
var pageUrl = "http://localhost:61950/Portal/Sample.html";// TODO: Add your Reply URL
  • ClientId: application ID khi bạn register application của bạn
  • TenanID: Directory ID trên Azure AD tenant của bạn (xem ảnh dưới)

adal_crm06

Add authenticate() function để check token

function authenticate() {
    var isCallback = authContext.isCallback(window.location.hash);
    if (isCallback) {
        authContext.handleWindowCallback();
    }
    var loginError = authContext.getLoginError();
    if (isCallback && !loginError) {
        window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);

Add login function từ authentication context (ADAL.js) để redirect user to Azure authorization endpoint

document.getElementById('login').addEventListener('click', function () {
        login();
})
function login() {
    authContext.login();
}

Nếu bạn cần trợ giúp, hãy comment bên dưới nhé.

Trần Phương

Anh Trần Phương là chuyên gia trong các giải pháp Business của Microsoft, bao gồm Dynamics CRM, Dynamics AX với hơn 5 năm kinh nghiệm, trong tổng số 8 năm kinh nghiệm về Software Development. Anh Phương hiện đang công tác cho FPT Asia Pacific, đảm nhiệm vị trí chuyên gia tư vấn Dynamics CRM cho khối Public Sector và Healthcare. Đến với AzureVN.NET, anh Phương mong muốn được đóng góp các giải pháp tích hợp Dynamics CRM và Microsoft Azure.

phuongt has 1 posts and counting.See all posts by phuongt

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *