zoukankan      html  css  js  c++  java
  • WCF安全的配置

    1,添加 System.IdentityModel 引用dll

    2,添加一个继承UserNamePasswordValidator的类,来验证用户名,密码,并且实现其抽象方法Validate,异常类型为FaultException

    3,配置文件中的添加如下内容:
    (1),

    <behavior name="DomeBehavior">
    <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
    <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
    <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
    <serviceDebug includeExceptionDetailInFaults="false"/>
    <serviceCredentials>
    <userNameAuthentication userNamePasswordValidationMode="Custom"
    customUserNamePasswordValidatorType="WcfServer.UserValidator,WcfServer"/>
    </serviceCredentials>
    </behavior>

    (2)

    <binding name="TransportSecurityBinding">
    <security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName"/>
    </security>
    </binding>

    (3)

    <service name="WcfService.Dome" behaviorConfiguration="DomeBehavior">
    <endpoint binding="basicHttpBinding" behaviorConfiguration="TransportSecurityBinding" contract="WcfService.IDome"></endpoint>
    </service>

    注意:name="WcfService.Dome"为 命名空间.类名称,这个命名规则不能变,要不然就会出现不能访问元数据的异常

    4,访问协议必须基于https

    5,必须添加证书,在客户端调用时,若不想验证证书可通过 在 ServicePointManager.ServerCertificateValidationCallback 事件中,返回true来实现

    ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
    {
    return true;
    };

    还得配置

    <binding name="BasicHttpBinding_IDome">
    <security mode="TransportWithMessageCredential" />
    </binding>

    6,至此wcf服务,基于https协议的访问,才算是安全的
    以上内容即为本人在学习中的日记,不做教学使用。

  • 相关阅读:
    Android状态栏白底黑字,只需两步轻松搞定
    MyBatis注解
    MyBatis延迟加载和缓存
    MyBatis关联查询
    mybatis智能标签1
    Mybatis智能标签
    增删改查
    初始MyBatis
    第7章:Servlet 基础
    第3章 JSP数据交互(二)
  • 原文地址:https://www.cnblogs.com/wushaoliang/p/4284173.html
Copyright © 2011-2022 走看看