zoukankan      html  css  js  c++  java
  • WCF安全探讨之服务元数据保护

      最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我最关心的是WCF的安全问题,网上不少朋友介绍的WCF的安全也是少得可怜,微软发布的WCF Security GUID好像讲得也只是入门级别的教程,离真正应用到项目中还是有很大的距离,这也让我萌发了分享的想法,今天先放出来占个位置吧,有反对的朋友砖头轻点,呵~,可以告诉你,WCF的安全里,有很多的小秘密,当然还是要告诉你,并且有此小秘密是要自己去体验后才知道,在博客排版方面,李会军(军哥)让人感觉最舒服,在解说方面,军哥也是以简洁著称,我在这里也学习一下,一起简洁吧,我希望以后的WCF安全探讨里,一次只讲一个小内容好了~

      概述

      Windows Communication Foundation (WCF) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型(摘自MSDN),在分布式环境下的安全问题尤为重要,如果你觉得使用了WCF默认的安全措施可以让你高枕无忧,那明天你可就以回家种田了,当然,对于学习来说,足够了~,但我们讲的是真正的项目应用,WCF在各种协议下的安全提供和保证是不尽相同的。

       背景

    某天,经理老陈对程序员小李说:小李,我们公司外包到一个项目,但是客户要求采用分布式部署,现在项目快接近尾声了,由于我们采用的是WCF,所以在部署的时候出现了一点问题,我们的服务好像谁都能访问得到啊,这是为什么呢?

     问题呈现

    小李第一件事就是去查看了服务配置文件,真的是不看不知道,一看吓一跳,原来开发WCF时,采用的都是默认的配置,全是自动生成的代码,没有经过任何的改动,一想到项目将会以这种姿态交付,小李着实捏了一把汗。

    Code

      解决之道

     小李第一件事就是把配置文件给修改好了,接着解决了困扰老陈许久的问题。

     1、删除元数据交换终结点信息

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

     2、将http协议获取元数据重置为:false

    <serviceMetadata httpGetEnabled="false"/>

     3、一般我们都会在开发时配置为元数据据可发现,但是切记,发布你的服务前,一定要删除了,目前,服务在一定范围上得到了保护

    4、最终配置如下

         <services>
          
    <service name="WcfServiceLibrary2.Service1" behaviorConfiguration="WcfServiceLibrary2.Service1Behavior">
            
    <host>
              
    <baseAddresses>
                
    <add baseAddress = "http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary2/Service1/" />
              
    </baseAddresses>
            
    </host>
            
    <endpoint address ="" binding="wsHttpBinding" contract="WcfServiceLibrary2.IService1">
              
    <identity>
                
    <dns value="localhost"/>
              
    </identity>
            
    </endpoint>
          
    </service>
        
    </services>
        
    <behaviors>
          
    <serviceBehaviors>
            
    <behavior name="WcfServiceLibrary2.Service1Behavior">           
           
    <serviceDebug includeExceptionDetailInFaults="False" />
          
        <serviceDebug includeExceptionDetailInFaults="False"/></behavior></serviceBehaviors></behaviors>

     

     后话

    1、粗心大意的程序员可是不受欢迎的喔

    2、下篇更精彩,欢迎转载,但请注明出处--lsotcode博客(http://www.cnblogs.com/viter/)!

    说得不对的地方,欢迎拍砖!

    • 欢迎关注收取阅读最新文章
    • 好看点个推荐呗~
    • 出处:http://www.cnblogs.com/viter/
    • 本文版权归作者和博客园共有,欢迎个人转载,必须保留此段声明;商业转载请联系授权,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    • 欢迎大家关注我的微信公众号,一起学习一起进步
  • 相关阅读:
    Windows JScript 在 游览器 中运行 调试 Shell 文件系统
    autohotkey 符号链接 软连接 symbolink
    软链接 硬链接 测试
    SolidWorks 修改 基准面 标准坐标系
    手机 路径 WebDAV 映射 驱动器
    Win10上手机路径
    explorer 命令行
    单位公司 网络 封锁 屏蔽 深信 AC
    cobbler自动化部署原理篇
    Docker四种网络模式
  • 原文地址:https://www.cnblogs.com/viter/p/wcf.html
Copyright © 2011-2022 走看看