wcf服务的核心安全设置
在典型场景中如何应用正确的安全绑定
windows认证,证书和基于用户名的认证
在windows域或者自定义信任存储中的授权
核心的安全概念
1、互认证(Mutual Authentication),发送者与接受者互相认证
2、授权(Authorization),决定经过认证者拥有哪些权限
3、保密性(Confidentiality),确保只有所期望的接受者才能够看到信息
4、完整性(Integrity)确保消息不会被恶意攻击者所篡改(数字签名的方式)
5、可靠性(Reliablity),防止重放与Dos攻击
认证、授权
将证书传递给对应的调用者,内网或者都在同一个域里面使用Windwos令牌(tokens),证书,在比较复杂的异构环境中用户名以及密码
服务也必须被标示,Windwos令牌,证书
根据相应的证书存储区域进行授权,收集角色,访问权限,授权等信息
传输安全
保护消息在点到点传输之间的安全,跨网络节点,不同的应用程序之间,跨互操作边界
对消息进行加密与数字签名
网络上的传输安全
在穿越网络节点时的消息安全
点对点的传输安全应用
安全套接字(SSL),传输层安全(TLS),IP安全(IPSec)
消息安全
Web服务安全(WS*)
对最终消息接受者保证安全
部分消息加密
WCF安全设置
安全模式
1、传输安全
<netTcpBinding> <binding name="netTcpTransportSecurity"> <security mode="Transport"> <transport clientCredentialType="Windows" <security/> </binding > </netTcpBinding
2、消息安全
<netTcpBinding> <binding name="wsHttpMessageSecurity"> <security mode="Message"> <message clientCredentialType="UserName"/> <security/> </binding > </netTcpBinding>
3、消息和传输安全(混合安全)
<basicHttpBinding> <binding name="basicHttp"> <security mode="TransportWithMessageCredential"> <transport/> <message clientCredentialType="UserName"/> <security/> </binding > </basicHttBinding>
保护级别
缺省情况下所有的消息都会被签名并且加密,需要绑定支持
能够控制消息的保护机制
能够适用于最小级别的保护
保护级别包括:None,Sign,EncryptAndSign
1、控制在网络上传输的保护级别,用于传输保护,在TCP,命名管道(named popes),与MSMQ的绑定属性中进行设置
无法控制ssl的设置
<netTcpBinding> <binding name="signOnly"> <security> <transport protectionLevel="Sign"/> </security> </binding > </netTcpBinding>
2、控制消息保护级别
客户端与服务端证书,在服务契约,操作契约,消息契约中进行设置
ProtectionLevel=ProtectionLevel.Sign
为传输或者消息级别使用最小级别保护,如消息的部分加密与签名,在服务端与客户端选择最小级别保护
客户端证书
1、证书选项,Windows,用户名密码,X.509证书,发布安全性断言标记语言(SAML)令牌或者自定义令牌
2、根据绑定配置进行不同的选择
3、提供带有证书的代理
服务端证书
1、证书选型,Windwos,X.509证书
Intranet场景
1、用于互认证的Windows证书
2、认证与授权使用缺省Windows成员与角色提供器(provider)
3、消息在传输层加密与签名
4、在服务端受到保护的操作上实现基于角色的授权
5、在可信的子系统模型中,服务通常拒绝使用身份扮演
身份扮演
1、服务可以控制扮演的级别,OperationBehaviorAttribute,ImpersonaationLevel设置:NotAllowed,Allowed,Required
[OperationBehavior(Impersonation=ImpersonationOption.NotAllowed)] public string Hell(string inputString)
2、能够控制所有的服务操作,ServiceAuthorization
<serviceAuthorization impersonateCallerForAllOperations="false"/>
3、客户端能够控制扮演的级别
TokenImpersonationLevel,None,Anonymous,Identification,Impersonation,Delegation
业务伙伴与跨主机调用
1、服务证书标示服务并且在传输过程中保护消息
2、证书惟一地标示伙伴或者发起调用的跨主机的应用程序
3、使用缺省证书认证机制进行证书的认证
4、使用Peer Trust及在线撤销对证书进行认证