NegotiateStream secureChannel = new NegotiateStream.networkStream);
secureChannel.ClientAuthenticate(
CredentialCache.DefaultNetworkCredentials,
"SSPISample/TargetMachine:4242", ProtectionLevel.EncryptAndSign,
TokenImpersonationLevel.Impersonation);
完成这些后,您可以像使用一般的 NetworkStream 一样来使用 secureChannel,但通过 secureChannel 的任何数据都将通过消息身份验证代码 (MAC) 得到完整保护,并进行加密。您在服务器端还需要 NegotiateStream 的实例以便解密传入的消息,当然,该服务器可以通过 RemoteIdentity 属性获得表示其客户端的 WindowsIdentity。这样服务器就可以模拟或执行基于角色的访问检查。
SslStream 看起来很类似,但是毫无疑问,在身份验证过程中要使用与 Kerberos 票证相对的 X.509 证书。它允许客户端检查服务器证书吊销并为相互进行身份验证提供客户端证书。同样,一旦完成身份验证握手,您就可以在通道中传输数据,并可以放心,数据将受到完整性保护并进行加密。
返回页首
System.Runtime.Remoting
另一个令人兴奋的发展是 TCP 信道现在支持安全性。这是使用我前面讲过的 NegotiateStream 类内置到信道中的,它可以通过指定客户端和服务器远程配置文件中的一些新属性而激活的。我在本专栏中不再深入探讨这个主题,但是我的书中有一章讲述了这个问题,您可以在 The .NET Developer’s Guide to Windows Security 处在线阅读。
返回页首
System.Security.Cryptography
DPAPI 现在是 .NET Framework 中的一流成员,两个 .NETclasses、ProtectedData 和 ProtectedMemory 使其使用非常简单:
private static byte[] Decrypt(byte[] ciphertext) {
文章来源于领测软件测试网 https://www.ltesting.net/