将用户身份从MVC传递到Web Api

时间:2013-09-04 18:09:47

标签: c# asp.net-mvc json asp.net-mvc-4 asp.net-web-api

我有一个使用Windows Auth的MVC应用程序,它使用Web Api服务。两者都托管在同一个域中,但坐在不同的服务器上(MVC可公开访问)。现在让我们假设Web Api服务有一个方法" CreateFooBar"这要求用户在特定的AD组中。在MVC层,我可以轻松地检查用户是否确实在组中,打包JSON消息并调用" CreateFooBar"。但是服务如何执行此类检查?如何判断哪个用户提出了请求?

最初的想法是将userID添加到JSON消息中,让服务方法检索详细信息,但这样可以让某人只传入他们喜欢的任何用户ID,这样就不会有用。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

您应该使用类似Kerberos委派的内容。 将使用Kerberos在MVC应用程序中对用户进行身份验证,然后将Kerberos令牌传递给Web API调用。

我们目前正在努力将凭据从ASP.NET应用程序传递到Exchange Web服务器。它工作正常。

如果您想了解更多信息,请查看此KB:http://support.microsoft.com/kb/810572

答案 1 :(得分:0)

您应该了解一下Windows身份基础可以为您做些什么。通过在您的环境中设置adfs并使用声明,您将解决大多数您正在讨论的问题。

你需要visual studio的身份和访问插件,你可以使用自托管的sts来测试这个想法。