none
WCF调用的限制问题. RRS feed

  • 问题

  • 昨天问了个配置问题.谢谢Frank Xu Lei<abbr class="affil">的回答.但我目前碰到的情况是我把WCF服务放在IIS上.之后所有人都可以调用了(都能看到)?</abbr>

    是一个网站.我分了UI和API(WCF服务)两个网站.UI网站用JS调用API网站.

    如何做能不允许别人调用WCF服务?但网站是所有人都可以访问的.

    <bindings>
    <wsHttpBinding>
    <binding name="NoneSecurity"
    maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false">
    <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/>
    <security mode="Message"> 这句话加入的话就是说只有和服务器用户名和密码一样的才可以访问是吗?
    </security>
    </binding>
    </wsHttpBinding>
    </bindings>



    <security>
    <transport />这个呢?只是说传输是要加密?
    </security>



    我认为还是把我碰到的问题给大家说明一下吧.请大家指教.多谢.

    我准备做一个网站.看到WCF+Jquery的方式.认为很不错.想在这个项目中应用.但到了测试的时候发现所有人都可以调用我的WCF服务.汗...要命的.

    怎么做才可以不允许别人调用咧?但我发现如果不把WCF服务放在外网的话.用户也是访问不到的.

    我现在的解决方案是想在网站端写ashx页面去调用WCF服务.这样会有什么问题吗?

    当然.我想如果不用ashx的话最好.直接jquery调用WCF可以达到我想要的结果吗?

    2011年4月21日 7:56

答案

  • 1. <security mode="Message"> 这句话加入的话就是说只有和服务器用户名和密码一样的才可以访问是吗?
    这句话表示WCF使用消息安全模式,来保证数据的安全,

    使用什么方式验证客户端,比如你说的用户名/密码,这需要另外配置,也在这个节点里设置

     <security mode="Message"> 

     </security>

    2.<security>
    <transport />这个呢?只是说传输是要加密?
    </security>
    这个不能保证数据是有传输通道提供安全的。

    只能说是配置了transport 节点。这个节点是针对transport 安全模式进行更详细的设置,比如对客户端身份验证 使用什么方式。

    要启用transport 安全模式,你需要在

     <security mode="Transport "> 

     </security>



    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年4月22日 1:13
    版主

全部回复

  • 1. <security mode="Message"> 这句话加入的话就是说只有和服务器用户名和密码一样的才可以访问是吗?
    这句话表示WCF使用消息安全模式,来保证数据的安全,

    使用什么方式验证客户端,比如你说的用户名/密码,这需要另外配置,也在这个节点里设置

     <security mode="Message"> 

     </security>

    2.<security>
    <transport />这个呢?只是说传输是要加密?
    </security>
    这个不能保证数据是有传输通道提供安全的。

    只能说是配置了transport 节点。这个节点是针对transport 安全模式进行更详细的设置,比如对客户端身份验证 使用什么方式。

    要启用transport 安全模式,你需要在

     <security mode="Transport "> 

     </security>



    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年4月22日 1:13
    版主
  •  <security mode="Message"> 这句话加入的话就是说只有和服务器用户名和密码一样的才可以访问是吗?
    </security>

    表示使用消息安全,然后你可以选择认证的模式,比如NTLM,用户名/密码(这个需要你实现CustomUserNameValidator来支持)等.

     

    <security>
    <transport />这个呢?只是说传输是要加密?
    </security>
    表示使用传输安全,同样可以选择认证模式.客户端用https访问.

    2011年4月22日 6:14
  • WCF默认配置没办法做到可以让你的Js调用,但是不让别人调用。

    你可以参考:

    1、http://msdn.microsoft.com/zh-cn/library/bb386582.aspx

    补充:

    可以尝试一下授权:

    1、http://msdn.microsoft.com/zh-cn/library/wce3kxhd(v=vs.80).aspx


    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。
    • 已编辑 wenhx 2011年4月22日 6:29 补充Asp.Net授权
    2011年4月22日 6:20