Webapi中的Web应用ClaimIdentity

时间:2015-12-14 16:48:36

标签: asp.net-mvc-4 asp.net-web-api oauth

我创建了一个mvc Web应用程序,该应用程序使用openid对Azure Ad进行身份验证,并获取声明以及令牌。我正在与Web Api连接以进行业务交易。 Web Api配置为oauth bearer tokens。

我在Azure广告中为Web App和Web Api创建了单独的oauth客户端。我能够从Mvc控制器获取Web Api的令牌,使用AuthenticationContext发送请求到Web Api。我需要知道如何将当前的用户声明发送到Web Api。 Web Api中的声明没有来自Web应用程序的用户声明。

让我在这里提供更多背景信息。我创建了一个MVC Web应用程序和一个Web Api层。 MVC Web App配置为使用Azure AD使用OpenID身份验证,我已将Web Api层配置为使用OAuth Bearer令牌进行授权。 Web Api层中的操作将通过ajax请求调用,并且承载令牌将添加到每个Ajax请求的标头中。在Web应用程序中对用户进行身份验证后,会在Azure广告的声明之外向用户添加其他声明。我可以使用AuthenticationContext.AcquireToken为Web Api层创建令牌,但Web Api的令牌没有来自Web App的用户信息。

1 个答案:

答案 0 :(得分:0)

根据我的想法,我在黑暗中采取狂野的刺伤。

声明附加在用户身上,因此理论上,只要两个应用程序共享同一个用户数据存储区,您在一个位置添加的任何声明都应在另一个声明中可用。但是,声明在身份验证时加载,而不是动态更新。因此,如果您已登录Web应用程序并使用Web Api添加声明,则在重新验证用户之前,该声明将无法在Web应用程序端提供。