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 )
謝謝!我們剛剛得到了微軟對此的確認。你只是付費支持的20倍! –