使用Identity 2.0在MVC应用程序和WCF服务之间传递身份验证

时间:2015-05-06 22:29:10

标签: c# wcf authentication asp.net-identity-2 asp.net-mvc-5.2

我创建了一个在IIS中运行并在网站上发布的WCF服务。

我还有一个MVC应用程序,它使用indentity 2.0来验证和授权我的用户,并且该应用程序通过用户信息连接到SQL Server数据库。此应用程序使用WCF服务。

我想知道的是,是否可以使用MVC应用程序中经过身份验证的用户的用户凭据来调用WCF服务,如果是,那么这是执行此操作的最佳做​​法。

1 个答案:

答案 0 :(得分:2)

我终于找到了这个问题的答案。

从您的asp.net mvc应用程序调用Web服务时,您可以像这样传递cookie:

 var request = HttpContext.Current.Request;
 var cookie = request.Cookies.Get("IdentityCookie");
 var ticket = cookie.Value;

请注意这一行var cookie = request.Cookies.Get("IdentityCookie") 在您的情况下无效,因为我重命名了Cookie ,如果您没有重命名Cookie 替换& #34; IdentityCookie" for" .AspNet.ApplicationCookie" 否则只需将其替换为您的Cookie名称。

(在我的情况下,我有一个类在每个请求中自动发送消息头,cookie进入该头,你可以做类似的事情)

然后您只需要在WCF端发出消息Inspector,以便在调用服务之前将每个请求传递给该检查器。在该Inspector中,您可以decrypt the cookie并检查用户是否经过验证。

它为我解决了这个问题,我希望这会有所帮助。