2016-05-02 27 views
6

Tôi đang cố gắng xác thực với Dynamics CRM 2016 Trực tuyến và Azure Active Directory. Tôi đã có thể làm theo tất cả các bước ở đây:API phần còn lại trực tuyến Dynamics CRM 2016 với thông tin đăng nhập của khách hàng Luồng OAuth

https://msdn.microsoft.com/en-us/library/mt622431.aspxhttps://msdn.microsoft.com/en-us/library/gg327838.aspx

nhưng các bước chứng minh làm thế nào để thiết lập dòng chảy xác thực tên người dùng. Tôi muốn sử dụng luồng thông tin khách hàng. Tôi đã tạo một ứng dụng mới trong Azure AD - một ứng dụng web. Tôi có một ID khách hàng và một khóa ứng dụng và tôi thiết lập các quyền cho Dynamics CRM Online. Tôi có thể nhận mã thông báo truy cập, nhưng trong các cuộc gọi tiếp theo, tôi nhận được lỗi này:

HTTP Error 401 - Unauthorized: Access is denied

Tôi có bỏ lỡ một bước không? Có ai biết một bài đăng ở đâu đó cung cấp chi tiết về cách làm cho luồng này hoạt động không?

Đây là mã của tôi:

 string clientId = "<client id>"; 
     string appKey = "<app key>"; 

     // Get the authority and resource URL at runtime 
     AuthenticationParameters ap = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri("https://<org address>/api/data/")).Result; 
     String authorityUrl = ap.Authority; 
     String resourceUrl = ap.Resource; 

     // Authenticate the registered application with Azure Active Directory. 
     AuthenticationContext authContext = new AuthenticationContext(authorityUrl); 
     ClientCredential clientCredential = new ClientCredential(clientId, appKey); 

     AuthenticationResult result = authContext.AcquireToken(resourceUrl, clientCredential); 

     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); 
     HttpResponseMessage response = client.GetAsync("https://<org address>/api/data/v8.1/EntityDefinitions").Result; 
+0

Tương tự như http://stackoverflow.com/questions/37215742/401-unauthorized-authentication-using-rest-api-dynamics-crm-with-azure-ad#comment61963502_37215742 Nó có thể là có thể là API của họ không hỗ trợ tín dụng ứng dụng. Có thể họ đang tìm kiếm sự cho phép cụ thể (được cấp quyền truy cập được ủy quyền) không tồn tại trong mã thông báo truy cập có được bằng luồng thông tin xác thực. –

+0

Vui lòng xem giải pháp cho câu hỏi tương tự của tôi http://stackoverflow.com/questions/37454539/using-adal-c-sharp-as-confidential-user-daemon-server-server-to-server-401-u/38008891 # 38008891 – IntegerWolf

+0

Bản sao có thể có của [Sử dụng ADAL C# làm Người dùng bí mật/Máy chủ Daemon/Máy chủ đến Máy chủ - 401 Không được ủy quyền] (https://stackoverflow.com/questions/37454539/using-adal-c-sharp-as-confidential -user-daemon-server-server-tới-server-401-u) –

Trả lời

Các vấn đề liên quan