【问题标题】:Web app ClaimsIdentity in WebapiWebapi 中的 Web 应用程序 ClaimsIdentity
【发布时间】:2016-03-20 05:58:20
【问题描述】:

我创建了一个 mvc Web 应用程序,它使用 openid 向 Azure Ad 进行身份验证并获取声明和令牌。我正在与 Web Api 交互以进行业务交易。 Web Api 配置为 oauth Bearer 令牌。

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

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

【问题讨论】:

  • 感谢您的回复。实际上,我并没有取得太大进展。 UserAssertion 需要一个属于 Web Api 的令牌,我无法获取用户密码来创建 UserCredential 对象。

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


【解决方案1】:

根据我认为正在发生的事情,我在这里暗中尝试。

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

【讨论】:

  • 嗨,这确实提供了一些上下文。谢谢。只是一个一般性的说明,我如何将一个令牌关联到一个用户与一个 Web Api 授权。显然,我从 Azure Ad for the Web Api 收到的令牌与任何用户 ID 都没有关联。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2014-02-24
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多