2017-05-26 109 views
0

我正在嘗試使用ADFS 3.0和當前用戶的憑據來針對(ASP.net)Web API對Windows服務(非互動)進行身份驗證。ADFS ADAL當前用戶窗口服務

這是可能的,如果是的話,下面的方法是正確的?

當作爲控制檯應用程序運行時,我可以使用顯示登錄屏幕的AcquireTokenAsync重載成功獲取(JWT)令牌,然後以當前用戶的身份自動登錄並在沒有交互的情況下消失。這顯然不適用於Windows服務(但在非交互模式下拋出顯示UI的錯誤)。

我們得到以下錯誤在ADFS服務器上的Windows登錄:

Encountered error during federation passive request. 

Microsoft.IdentityServer.RequestFailedException: MSIS7065: There are no registered protocol handlers on path /adfs/oauth2/token to process the incoming request. 
    at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context) 

這是一個POST到/ ADFS /的oauth2 /令牌HTTP/1.1:

resource=https%3A%2F%2Fadfs-server%2Fapi_name&client_id=983EB4F7-A4D1-4897-A2BD-5D6C268A5813&scope=opened 

導致的表示發生錯誤的HTML文檔。

通過下面的代碼生成:

var authenticationContext = new AuthenticationContext("https://adfs-server/adfs", validateAuthority: false); //validate authority can only be true with Azure AD 
var tokenResult = await authenticationContext.AcquireTokenAsync("https://adfs-server/api_name", "983EB4F7-A4D1-4897-A2BD-5D6C268A5813", new UserCredential()); //use current login -- this line fails 
request.Headers.Add("Authorization", tokenResult.CreateAuthorizationHeader()); 

我們使用的版本是:

  • ADAL.net(Microsoft.IdentityModel.Clients.ActiveDirectory)3.13.9
  • ADFS 3.0 (Windows Server 2012 R2)
  • .net Framework 4.6.2
  • Windows 10(Creators Update - 1703 )

回答

0

ADFS 3.0僅支持根據this article的Web API的授權代碼授權。

看看那個併發布任何問題。

+0

謝謝!我們剛剛得到了微軟對此的確認。你只是付費支持的20倍! –