0

Azure AD를 통해 Operations for Dynamics 365로 인증하는 단일 페이지 웹 응용 프로그램을 만들려고합니다. 나는 Azure AD와 Dynamics 365에서 내 응용 프로그램을 등록하기 위해 모든 지침을 따랐습니다. Azure AD로 성공적으로 인증을 받았고 adal javascript 라이브러리를 사용하여 응용 프로그램에서 유효한 토큰을 받았습니다. 그러나 D365에서 OData 끝점에 요청할 때 401 오류가 발생합니다. 나는 Azure AD로 인증 받았고 인증 토큰에 토큰을 전달하고 있으므로 승인 헤더를 올바르게 설정하지 않으면 왜 인증 오류가 발생하는지 알 수 없습니까? 내 요청 사항은 다음과 같습니다.Operations SPA 및 OData 용 Dynamics 365

//Function that actually retrieves the accounts 
function retrieveAccounts(error, token) { 
// Handle ADAL Errors. 
if (error || !token) { 
    errorMessage.textContent = 'ADAL error occurred: ' + error; 
    return; 
} 

var req = new XMLHttpRequest() 
req.open("GET", encodeURI(organizationURI + "/data/Projects"), true); 
//Set Bearer token 
req.setRequestHeader("Authorization", "Bearer" + token); 
req.setRequestHeader("Accept", "application/json"); 
req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
req.setRequestHeader("OData-MaxVersion", "4.0"); 
req.setRequestHeader("OData-Version", "4.0"); 
req.onreadystatechange = function() { 
    if (this.readyState == 4 /* complete */) { 
     req.onreadystatechange = null; 
     if (this.status == 200) { 
      var projects = JSON.parse(this.response).value; 
      renderProjects(projects); 
     } 
     else { 
      var error = JSON.parse(this.response).error; 
      console.log(error.message); 
      errorMessage.textContent = error.message; 
     } 
    } 
}; 
req.send(); 
} 

아이디어가 많이 있습니다. 나는 웹 api를 사용하여 Dynamics 365 CRM을 사용하여이 작업을 성공적으로 수행 할 수 있었으므로 설치가 약간 다르긴하지만 Operations에서도 작동 할 것으로 가정하고 있습니다.

답변

0

이 방법은 작동하지 않으며 D365 Operations OData 끝점을 클라이언트 비밀 번호로 인증해야한다고 생각합니다. 이 메소드에서 서비스 호출시 전달자 토큰으로 전달되는 JWT 토큰은 클라이언트 키로 서명되지 않습니다. 단일 웹 응용 프로그램에서이 작업을 수행 할 수있는 안전한 방법이 없다고 생각합니다. 대답은 서버 측의 호출을 처리하고 데이터를 내 SPA에 다시 전달하는 두 번째 웹 API 응용 프로그램을 만드는 것임을 믿기 때문에 이것을 닫습니다.