ASP.NET MVC 3连接到安全的远程WCF服务

时间:2012-02-16 12:13:04

标签: asp.net-mvc asp.net-mvc-3 wcf authentication

我是所有网络新手,所以这个问题可能看起来微不足道,但对我来说却不是。实现逻辑是:

ASP.NET MVC 3 - > WCF服务 - > SQL数据库

ASP.NET MVC3中的身份验证和授权使用自定义成员身份和角色提供程序,因为所有登录详细信息都存储在SQL数据库中。 还需要对WCF服务实施授权。它使用与ASP.NET MVC 3相同的凭据。 我已使用自定义UsernameValidator为WCF安全性实现了用户名类型。

<security mode="TransportWithMessageCredential">
  <transport clientCredentialType="None" />
  <message clientCredentialType="UserName" />
</security>

当用户登录到网站时,它首次运行,因为有凭据。但是,在ASP.NET MVC 3上的FormsAuthentication.SetAuthCookie之后,用户名就是我所拥有的。 由于MVC方法由各种控制器组成,我必须在每个控制器上创建WCF客户端实例。但没有凭据就没有意义。

       [Authorize]
        public class MyController : Controller
        {
            private WebServiceClient ServiceClient = new WebServiceClient();

            public ActionResult Index(string userName)
            {
              var model = ServiceClient.GetDataList();
              return View(model);
            }
        }

新实例不使用现有会话。它会创建一个带有空白凭证的新帐户。

  • 是否有一种安全的方式来为每个会话创建WCF客户端实例?
  • 或者WCF接受ASP.NET身份验证的选项?
  • 将asp.net身份验证附加到wcf的最佳方法是什么? 请求?

1 个答案:

答案 0 :(得分:0)

在阅读the suggested link后,决定将ASP.NET MVC服务器和WCF服务保留在一台计算机上,并使用net.pipe端点进行通信。谢谢。