【问题标题】:Passing user identity from MVC to Web Api将用户身份从 MVC 传递到 Web Api
【发布时间】:2013-09-08 09:04:29
【问题描述】:
我有一个使用 Windows Auth 的 MVC 应用程序,它使用 Web Api 服务。两者都托管在同一个域中,但位于不同的服务器上(MVC 可公开访问)。现在让我们假设 Web Api 服务有一个方法“CreateFooBar”,它要求用户在特定的 AD 组中。在 MVC 层,我可以轻松检查用户是否确实在组中,打包 JSON 消息并调用“CreateFooBar”。但是服务如何执行这样的检查呢?我如何知道是哪个用户提出了请求?
最初的想法只是将用户 ID 添加到 JSON 消息中,并让服务方法检索详细信息,但这将允许某人只传递他们喜欢的任何用户 ID,因此显然这不起作用。有人能指出我正确的方向吗?
【问题讨论】:
标签:
c#
asp.net-mvc
json
asp.net-mvc-4
asp.net-web-api
【解决方案1】:
您应该使用 Kerberos 委托之类的东西。
用户将在 MVC 应用程序中使用 Kerberos 进行身份验证,然后将 Kerberos 令牌传递给 Web API 调用。
我们目前正在将凭据从 ASP.NET 应用程序传递到 Exchange Webserver。它工作正常。
如果您想了解更多信息,请查看此知识库:http://support.microsoft.com/kb/810572
【解决方案2】:
您应该了解 Windows Identity Foundation 可以为您做什么。通过在您的环境中设置 adfs 并使用声明,您将解决您所谈论的大多数问题。
您需要 Visual Studio 的身份和访问插件,并且可以使用自托管的 sts 测试该想法。