使用用于AzureBeareAuthentication的JWT获取访问令牌

使用用于AzureBeareAuthentication的JWT获取访问令牌,authentication,asp.net-web-api,owin,jwt,azure-active-directory,Authentication,Asp.net Web Api,Owin,Jwt,Azure Active Directory,我有一个WebApi应用程序,它使用Windows Azure Active Directory承载身份验证对用户进行身份验证。在用户经过身份验证后,我想查询Azure的Graph Api以获取有关该用户的更多信息 我有一个可行的解决方案,但看起来很粗糙。我阅读授权标题并去掉承载部分,然后使用AquireToken获取新令牌: var authHeader = HttpContext.Current.Request.Headers["Authorization"]; var tokenMatch

我有一个WebApi应用程序,它使用Windows Azure Active Directory承载身份验证对用户进行身份验证。在用户经过身份验证后,我想查询Azure的Graph Api以获取有关该用户的更多信息

我有一个可行的解决方案,但看起来很粗糙。我阅读授权标题并去掉承载部分,然后使用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;
var authHeader=HttpContext.Current.Request.Headers[“Authorization”];

var tokenMatch=Regex.Match(authHeader,@“(?这确实有点骇客:-)请参阅,以了解通过ClaimsPrincipal检索传入令牌的方法。它归结为传递
TokenValidationParameters=new TokenValidationParameters{SaveSigninToken=true}
在选项中,从控制器中检索,或通过

var bootstrapContext = ClaimsPrincipal.Current.Identities.First().BootstrapContext as System.IdentityModel.Tokens.BootstrapContext; 

谢谢,这正是我错过的。