我創建了一個「測試」項目,我正在使用.Net 4.6 WebApi,我想要使用ADFS集成身份驗證 - 類似於this post。我打電話從一個角度項目的API和使用下面的代碼,我就能拿到認證頭:WebApi和ADFS集成
string authority = ConfigurationManager.AppSettings["adfsEndpoint"].ToString();
string resourceURI = "https://localhost:44388/";
string clientID = "someguid";
string clientReturnURI = "http://localhost:55695/";
var ac = new AuthenticationContext(authority, false);
//This seems to be working as I am getting a token back after successful authentication
var ar = await ac.AcquireTokenAsync(resourceURI, clientID, new Uri(clientReturnURI), new PlatformParameters(PromptBehavior.Auto));
string authHeader = ar.CreateAuthorizationHeader();
//this fails with a 401
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:64038/api/Values");
request.Headers.TryAddWithoutValidation("Authorization", authHeader);
var response = await client.SendAsync(request);
return response ;
然而,在我的ValuesController的後續調用正在使用該授權屬性,我總是收到401 Unathorized迴應(即使我通過授權標題)。我不確定我錯過了什麼。
還有一件事要注意:當我被提示輸入憑據時,我得到下面的對話框,而不是我使用ADFS進行身份驗證的正常MVC應用程序獲得的典型ADFS登錄頁面(我不確定爲什麼會這樣也可能發生)。