如何加密连接身份验证请求 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

本主题概述了 Windows 运行时用来让 Windows 运行时应用确保连接安全和提供所需身份验证凭据,从而建立和使用安全网络连接的主要方法。

技术

创建安全套接字连接

安全套接字层 (SSL) 和最新的传输层安全 (TLS) 都是旨在为网络通信提供身份验证和加密功能的加密协议。这些协议专门用于在发送和接收网络数据时防止发生窃听和篡改。这些协议使用一种客户端-服务器模型进行协议交换。这些协议还会使用数字证书和证书颁发机构来验证服务器是否与其自称的身份相符。TLS 协议记录在 IETF RFC 5246 中。早期的 SSL 协议由 Netscape Communications 记录。SSL 通常用于指这两种协议。

StreamSocket 对象可以配置用于在客户端和服务器之间使用 SSL/TLS 进行通信。对 SSL/TLS 的支持仅限于在 SSL/TLS 协商中将 StreamSocket 对象用作客户端。当系统接受一个连接以在被创建的 StreamSocket 上启用 SSL/TLS 时,由于作为服务器的 SSL/TLS 协商没有为 StreamSocket 实现,所以 StreamSocketListener 现在不能使用 SSL/TLS 用于被创建的 StreamSocket

有关如何创建或升级到网络服务的安全套接字连接的示例,请参阅如何借助 TLS/SSL 确保套接字连接的安全

创建安全 WebSocket 连接

与传统套接字连接相同,为 Windows 应用商店应用使用 Windows 8 中的 StreamWebSocketMessageWebSocket 功能时,使用传输层安全性 (TLS)/安全套接字层 (SSL) 也可以加密 WebSocket 连接。 一般来说,你希望使用安全的 WebSocket 连接。这会提高连接成功的可能性,因为许多代理会拒绝未加密的 WebSocket 连接。

有关如何创建或升级到网络服务的安全套接字连接的示例,请参阅如何借助 TLS/SSL 确保 WebSocket 连接的安全

除了 TLS/SSL 加密之外,服务器可能需要 Sec-WebSocket-Protocol 头值才能完成初始握手。该值由 StreamWebSocketInformation.ProtocolMessageWebSocketInformation.Protocol 属性表示,用于指示连接的协议版本,并让 服务器可以正确解释开始手握和 随后交换的数据。如果服务器在任何时刻无法以可关闭连接 的安全方式解释传入数据,则使用此协议信息。

如果客户端发出的初始请求既不包含此致,也不提供与服务器的预期不相符的值,则预期值会在发生 WebSocket 握手错误时 从服务器发送到客户端。

向 Web 服务提供身份验证凭据

使 Windows 运行时应用可与安全 Web 服务交互的每个 Windows 运行时联网 API 均提供其自有方法来初始化客户端,或者使用服务器和代理身份验证凭据来设置请求标头。每个方法均使用指示用户名、密码和将这些凭据用于的资源的 PasswordCredential 对象进行设置。下表提供这些 API 的映射:

WebSockets

Background Transfer

Syndication

AtomPub

 

相关主题

如何借助 TLS/SSL 确保套接字连接的安全

如何使用 TLS/SSL 确保 WebSocket 连接的安全

连接到网络服务