我有一個WebApi應用程序使用Windows Azure Active Directory載體驗證來驗證用戶身份。在用戶通過身份驗證後,我想查詢Azure的Graph Api以獲取有關該用戶的更多信息。使用用於AzureBearerAuthentication的JWT獲取Access令牌
我有一個解決方案,但似乎很hacky。我讀了Authorization頭並剝離出靠背部分,然後我用AquireToken來獲得新的令牌:
var authHeader = HttpContext.Current.Request.Headers["Authorization"];
var tokenMatch = Regex.Match(authHeader, @"(?<=^\s*bearer\s+).+$", RegexOptions.IgnoreCase);
var result = authInfo.AuthContext.AcquireToken(resourceId, authInfo.Credential,
new UserAssertion(tokenMatch.Value));
return result.AccessToken;
必須有一個更好的辦法,但我試過AcquireToken許多不同的重載,這是唯一的辦法,我可以得到它的工作。我嘗試了AcquireTokenSilent,它適用於我的客戶端應用程序,因爲TokenCache中有一個令牌,但是當我嘗試使用WebApi時,似乎沒有任何可實施TokenCache的地方。
感謝您的控制器或過濾器代碼中檢索,這是我錯過了什麼。 http://stackoverflow.com/questions/14083885/bootstrapcontext-is-null-on-claimsidentity/33827070#33827070 – Jaanus