【发布时间】:2015-08-18 21:42:26
【问题描述】:
我有一个 WebApi 应用程序,它使用 Windows Azure Active Directory 承载身份验证对用户进行身份验证。用户通过身份验证后,我想查询 Azure 的 Graph Api 以获取有关用户的更多信息。
我有一个可行的解决方案,但看起来很老套。我阅读了 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。
【问题讨论】:
标签: authentication asp.net-web-api owin jwt azure-active-directory