代码之家  ›  专栏  ›  技术社区  ›  larryq

正在验证从ASP.NET MVC对WCF/Web服务的调用

  •  0
  • larryq  · 技术社区  · 15 年前

    这里的基本问题(我想),我希望有人能给我指明正确的方向。我对WCF不太了解,但我想创建一个Web服务,从ASP.NET MVC应用程序调用它。目标是确保只有经过授权的ASP.NET用户(我们正在使用表单身份验证)才能调用Web服务,而不仅仅是任何人。有没有教程,我可以看看如何处理这个?多谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    从这个问题上我想你 不关心访问WCF服务的最终(MVC)用户ID是什么 (换句话说,您不需要特定的经过身份验证的用户来访问wcf,这样您就可以获取该特定用户的ID(即,您知道joebubuser访问了wcf))。您只需要确保用户经过身份验证并获得使用该站点的授权。您不需要对MVC应用程序的每个潜在用户进行身份验证/授权。

    只要这是真的,那么我的方法如下:

  • 以特定的已知用户帐户运行MVC应用程序 (即在IIS中设置应用程序池以运行域用户,如您的域\youmvcaccount),而不是默认的ASP帐户。如果你还没有以域用户的身份运行你的MVC应用程序,很多网站都有如何实现这一点的说明。
  • 将WCF服务端点配置绑定设置为wshttp . 同样,许多网站描述了如何做到这一点。这里是 one 这是通过GUI实现的(我更喜欢手动编辑配置,但不管怎样)。因此,现在您的WCF服务将只接受安全的、经过身份验证的请求
  • 在MVC应用程序中创建WCF客户端代理。 要做到这一点,最简单的方法(可能不是最好的方法:分离关注点,但仅仅是为了开始)就是添加新的Web服务并以这种方式发现WCF端点。同样,如果你不知道怎么做的话,基本的东西很容易被搜索到。
  • 现在,您的MVC应用程序将对已验证的WCF服务进行调用。但是,此时,在您的域中经过身份验证的任何客户机都可以调用该服务。您现在只接受经过身份验证的用户,但接受任何授权用户。从您的MVC应用程序发出的所有呼叫都将来自您的域\您的rmvcapp标识。
  • 限制对1中设置的身份的授权 可以通过多种方式限制(授权)经过身份验证的用户。get'r'done的快速方式(但并不是非常灵活,因为任何更改都需要重新编译)只是为了检查请求的标识是否与服务调用中的WCF服务的标识相同。或者,您可以设置更健壮(同时具有更多goo)的选项,例如azman或其他WCF身份验证规则集。同样,许多站点在拥有经过身份验证的用户之后,都有关于设置此类内容的说明。这里是一个 SO question that limits authorization to a windows group 发布(我会这样做——更灵活,但您需要将该用户添加到您的域中的一个组中),以及另一篇更详细介绍WCF安全性和 allowing only a specific user 访问服务。