2017-08-10 213 views
2

我試圖將我的API連接到動態365 crm。當我得到郵遞員的令牌時,我可以訪問,但是當我用ADAL獲得它時,請求會返回401未經授權的情況。 如果我硬編碼在我的應用程序郵遞員得到的令牌,它工作正常。 我看到郵遞員返回我認爲信息ADALnot(如refresh_token,token_id)ADAL身份驗證令牌不同的郵遞員令牌Oauth2

Get token with postman

與ADAL

獲得令牌
string resource = "https://******.crm2.dynamics.com/"; 
string clientId = "**************"; 
string clientSecret = "************"; 
string authority = "https://login.microsoftonline.com/*****/oauth2/authorize"; 

ClientCredential credential = new ClientCredential(clientId, clientSecret); 
AuthenticationContext authContext = new AuthenticationContext(authority, true); 
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, credential); 

回答

0

有了郵遞員您使用OAuth 2.0 authorization code flow獲得令牌。 Azure AD將在成功響應時返回訪問令牌,刷新令牌,ID令牌。

使用ADAL authContext.AcquireTokenAsync(resource, credential);函數,您正在使用client credentials flow獲取令牌。通過此流程,應用程序向OAuth2令牌頒發端點呈現其客戶端憑證,並作爲迴應獲取代表應用程序本身的訪問令牌,而無需任何用戶信息,因此,由於不存在用戶信息,因此您將無法獲得id_token。此外,應用程序無需獲取刷新令牌。當訪問令牌到期時,它只會返回到OAuth2令牌頒發端點以獲取新的端點。

您可以使用帶有ADAL的授權碼流獲取令牌,請點擊here獲取代碼示例。