接続のセキュリティを確保して要求を認証する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
ここでは、Windows ランタイム アプリで接続のセキュリティを確保し、セキュリティが確保されたネットワーク接続を確立して使うために必要な認証資格情報を提供できるようにするために、Windows ランタイムで使われる主な方法について説明します。
テクノロジ
- Windows.Networking.Sockets
- Windows.Networking.BackgroundTransfer
- Windows.Web.Syndication
- Windows.Web.AtomPub
セキュリティが確保されたソケット接続の作成
Secure Sockets Layer (SSL) とより新しいトランスポート層セキュリティ (TLS) は、ネットワーク通信の認証と暗号化を実現するように設計された暗号化プロトコルです。これらのプロトコルは、ネットワーク データの送受信時に傍受や改ざんを防ぐように設計されています。これらのプロトコルでは、クライアント/サーバー モデルを使ってプロトコル交換が行われます。また、デジタル証明書と証明機関を使って、サーバーが本物であることが確認されます。TLS プロトコルは、IETF の RFC 5246 に記載されています。従来の SSL プロトコルは、Netscape Communications によって文書化されました。SSL はこの両方のプロトコルを指すことがよくあります。
StreamSocket オブジェクトは、クライアントとサーバー間の通信に SSL/TLS を使うように構成できます。この SSL/TLS のサポートは、SSL/TLS ネゴシエーションで StreamSocket オブジェクトをクライアントとして使うことに制限されます。現在、サーバーとしての SSL/TLS ネゴシエーションは StreamSocket 用に実装されていないので、接続が受信されて作成済みの StreamSocket で SSL/TLS が有効になるとき、作成済みの StreamSocket と一緒に StreamSocketListener で SSL/TLS を使うことはできません。
セキュリティが確保されたソケット接続を作成したりネットワーク サービスへとアップグレードする方法の例については、「TLS/SSL を使ってソケット接続のセキュリティを確保する方法」をご覧ください。
セキュリティが確保された WebSocket 接続の作成
従来のソケット接続と同様に、Windows 8 の StreamWebSocket と MessageWebSocket の機能を Windows ストア アプリで使う際に、トランスポート層セキュリティ (TLS)/Secure Sockets Layer (SSL) を使って WebSocket 接続を暗号化することもできます。 ほとんどの場合、WebSocket 接続にはセキュリティを確保する必要があります。多くのプロキシは、暗号化されていない WebSocket 接続を拒否するため、接続の成功率が高くなります。
セキュリティが確保されたソケット接続を作成したりネットワーク サービスへとアップグレードする方法の例については、「TLS/SSL を使って WebSocket 接続のセキュリティを確保する方法」をご覧ください。
最初のハンドシェークを完了するために、サーバーでは TLS/SSL 暗号化だけでなく Sec-WebSocket-Protocol ヘッダー値を要求することもあります。この値は StreamWebSocketInformation.Protocol プロパティと MessageWebSocketInformation.Protocol プロパティで表され、接続のプロトコル バージョンを示し、開いているハンドシェークとその後に交換されるデータをサーバーが正しく解釈できるようにします。このプロトコル情報を使うと、サーバーが着信するデータを安全な方法で解釈できないような状況になったときに、接続を閉じることができます。
クライアントからの最初の要求にこの値が含まれていない場合、または含まれている値がサーバーで想定されるものと一致しない場合は、WebSocket ハンドシェーク エラーでサーバーから想定される値がクライアントに送信されます。
Web サービスへの認証資格情報の提供
Windows ランタイムの Networking API は、Windows ランタイム アプリでセキュリティが確保された Web サービスと連携できるようにします。この API のそれぞれが、サーバーやプロキシの認証資格情報を使ってクライアントを初期化したり要求ヘッダーを設定する独自のメソッドを提供します。各メソッドは、PasswordCredential オブジェクトで設定されます。このオブジェクトはユーザー名、パスワード、それぞれの資格情報が使われるリソースを示します。次の表では、これらの API のマッピングについて説明します。
WebSockets |
|
Background Transfer |
|
Syndication |
|
AtomPub |
関連トピック
TLS/SSL を使ってソケット接続のセキュリティを確保する方法