2017-07-24 62 views
0

在一個場景中像這樣的 - 代表 - 的:https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof驗證到Azure的AD客戶端應用程序

我想代表客戶,而不是用戶的後端驗證到Azure的AD。我無法找到適合此案例的文檔中的適當示例。

那麼我在做什麼?

在客戶端:

var authContext = new AuthenticationContext(authorityUrl); 
var result = authContext.AcquireTokenAsync(webServiceUri, new ClientCredential(nativeClientId, nativeClientSecret)).GetAwaiter().GetResult(); 

在後端服務:

var authContext = new AuthenticationContext(authorityUrl); 
var result = authContext.AcquireTokenAsync(office365ResourceUri, new ClientAssertion(webClientId, result.AccessToken)) 

這引發以下異常:

AADSTS70002: Client assertion application identifier doesn't match 'client_id' parameter. 

它只是成功的時候我'點球納克相同的服務(指的自己!)在後端從客戶端:

authContext.AcquireTokenAsync(webServiceUri, new ClientAssertion(nativeClientId, result.AccessToken)) 

但是,這沒有任何意義的服務已去到Office 365 API。

任何想法?

回答

0

OAuth 2.0 On-Behalf-Of流將通過請求鏈傳播委派的用戶身份和權限。爲了使中間層服務能夠對下游服務進行身份驗證請求,需要代表用戶從Azure Active Directory(Azure AD)保護訪問令牌。

在您的方案中,您可以使用client credential flow獲取服務應用程序中office 365 api的令牌,而無需任何人爲交互,例如交互式登錄對話框。

請點擊這裏查看關於Authentication Scenarios for Azure AD的更多詳情。

相關問題