У меня есть приложение WebApi, которое использует аутентификацию на предъявителя на основе Windows Azure Active Directory для аутентификации пользователей. После того, как пользователь будет аутентифицирован, я хочу запросить у Azure Graph Api дополнительную информацию о пользователе.Приобретение токена доступа с использованием JWT, используемого для AzureBearerAuthentication
У меня есть решение, которое работает, но кажется очень взломанным. Я прочитал заголовок авторизации и вырезать однонаправленную часть, а затем я использую 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