我创建了一个在IIS中运行并在网站上发布的WCF服务。
我还有一个MVC应用程序,它使用indentity 2.0来验证和授权我的用户,并且该应用程序通过用户信息连接到SQL Server数据库。此应用程序使用WCF服务。
我想知道的是,是否可以使用MVC应用程序中经过身份验证的用户的用户凭据来调用WCF服务,如果是,那么这是执行此操作的最佳做法。
答案 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并检查用户是否经过验证。
它为我解决了这个问题,我希望这会有所帮助。