• 【WCF】WCF配置的行为安全策略对客户端的影响


    注:下表仅为本地调试的结果。实际上服务器上时,IIS的 Basic Auth 和 TransportWithMessageCredential 无法共用,只能取  Basic Auth + Tranport 或者 Anonymous + TransportWithMessageCredential 其一

    服务端

    假设有customUserNamePasswordValidator并且message clientCredentialType="UserName"

    客户端

    行为

    备注

    N/A

    security mode="TransportWithMessageCredential"

    代码里未填写client.ClientCredentials.UserName.UserName

    客户端会直接报错,根本不发起请求

    不可使用

    N/A

    security mode="TransportWithMessageCredential

    .net客户端不使用Https

    客户端报告Schema错误,不发起请求

    不可使用

    <security mode="TransportWithMessageCredential">

             

    security mode="Transport"

    服务端WCF框架直接抛出异常

    FaultException - InvalidSecurity

    根本不进入customUserNamePasswordValidator

    不可使用

    <security mode="TransportWithMessageCredential">

    security mode="TransportWithMessageCredential"

    服务端进入customUserNamePasswordValidator

    进行验证,如果验证出错,返回FaultCode=InvalidSecurityToken

    效果:customUserNamePasswordValidator

    可与IIS的Auth=Basic搭配使用

    服务端使用

    ServiceSecurityContext.Current.PrimaryIdentity.Name来获取ClientCredentials

    <security mode="Transport">

    (仅当IIS Auth=None时可运行,若Auth=Basic会在服务端报错)

    security mode="TransportWithMessageCredential"

    服务端忽略customUserNamePasswordValidator

    效果:启用Https,但是无任何帐号验证

    <security mode="Transport">

    (仅当IIS Auth=None时可运行,若Auth=Basic会在服务端报错)

    security mode="Transport"

    服务端忽略customUserNamePasswordValidator

    效果:启用Https,但是无任何帐号验证

    Security mode 无关

    <transport clientCredentialType="Basic"/>

    服务器端IIS关闭Anonymous并开启Basic验证

    <security mode="Transport">

    <transport clientCredentialType="Basic"/>

    </security>

    ClientCredentials必填,否则客户端不发起请求

    请求发起后,若有填写则使用Header Authorization Basic进行验证,无填写或验证不成功则使用ClientCredentials计算后当作 Basic进行验证。均失败后,将IIS返回的401异常抛出。服务端不进入WCF

    仅测试用,无生产意义

    Security mode 无关

    <transport clientCredentialType="Basic"/>

    服务器端IIS关闭Anonymous并开启Basic验证

    <security mode="TransportWithMessageCredential">

    <transport clientCredentialType="Basic"/>

    </security>

    ClientCredentials必填,否则客户端不发起请求

    请求发起后,则使用Header Authorization Basic进行请求(不填写亦会进行请求),失败后直接将IIS返回的401异常抛出。服务端不进入WCF

    仅测试用,无生产意义

    Security mode 无关

    IIS关闭Anonymous并开启Basic验证但是WCF配置中未开启<transport clientCredentialType="Basic"/>

    Any

    IIS首先进行Basic验证,不通过抛出401,通过后抛出500错误:The authentication schemes configured on the host ('Basic') do not allow those configured on the binding 'BasicHttpBinding' ('Anonymous')

    不可使用

    <security mode="Transport">

    <security mode="TransportWithMessageCredential">

    .net客户端Security mode="none"

    或使用SoapUI

    发起Http而非Https请求

    服务器会报告404

    不可使用

  • 相关阅读:
    哈夫曼编码
    20182330《程序设计与设计结构》 第九周学习总结
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验七报告
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验八报告
    20182330《程序设计与设计结构》 第八周学习总结
    20182330《程序设计与设计结构》 第七周学习总结
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验六报告
    20182326 2018-2019-1《程序设计与数据结构》课程总结
    20182326 2019-2020-1 《数据结构与面向对象程序设计》实验九报告
    团队作业——学习心得
  • 原文地址:https://www.cnblogs.com/lionetchen/p/13424538.html
Copyright © 2020-2023  润新知