WS-Security 仕様ではメッセージ・レベルで Web サービスを保護するために、認証、完全性、機密性の 3 つのメカニズムが用意されています。
このメカニズムはセキュリティー・トークンを使用し、ユーザーを検証して特定のコンテキストでクライアントが有効かどうかを判定します。 クライアントは、ユーザー、コンピューター、またはアプリケーションのいずれでも構いません。 認証が行われない場合、アタッカーがスプーフィング技法を用いて、変更した SOAP メッセージをサービス・プロバイダーに送信できることになります。
認証では、セキュリティー・トークンが要求メッセージに挿入されます。 使用されるセキュリティー・トークンのタイプによっては、セキュリティー・トークンが応答メッセージに挿入される場合もあります。 以下のタイプのセキュリティー・トークンが認証でサポートされています。
Username トークンは、ユーザー名とパスワードを確認するために使用されます。 Web サービス・サーバーがユーザー名トークンを受信すると、ユーザー名とパスワードが抽出されて、検証のためにユーザー・レジストリーに渡されます。 ユーザー名とパスワードの組み合わせが有効な場合、結果がサーバーに返され、メッセージを受け入れて処理します。 認証での使用時には、ユーザー名トークンは、応答メッセージに入れてではなく、通常は要求メッセージだけに入れて渡されます。
X.509 トークンは、証明書パスを使って検証されます。
SAML アサーションに関するブローカーのサポートは、検証のためにトークンを WS-Trust セキュリティー・トークン・サーバー (STS) に渡す操作だけに限られています。
Kerberos チケットは、ホストの Kerberos keytab ファイルに基づいて検証されます。
LTPA バイナリー・トークンに関するブローカーのサポートは、検証のためにトークンを WS-Trust STS に渡す操作だけに限られています。
このメカニズムでは、誤って情報の変更や書き換えが行われたり情報が失われたりしないように、メッセージ署名を使用します。 完全性が実装されている場合、SOAP メッセージの内容に XML デジタル署名が生成されます。 メッセージ・データが不正に変更された場合、署名は無効になります。 完全性がない場合、アタッカーが改ざん技法を用いて Web サービス・クライアントとサーバー間で SOAP メッセージを代行受信し、変更できることになります。
このメカニズムはメッセージの暗号化を使用して、第三者またはプロセスがメッセージの情報にアクセスしたり、情報が漏えいしたりすることのないようにします。 SOAP メッセージが暗号化されている場合、適切な鍵を持つサービスのみがメッセージを復号し、読み取ることができます。