ユーザー名トークン
<UsernameToken> エレメントを使用して、ユーザー名を伝搬し、また、オプションでパスワード情報を伝搬できます。 また、このトークン・タイプを使用して、基本認証情報を伝送することもできます。 ユーザー名とパスワードは、ともに SOAP メッセージの認証に使用されます。
OASIS: Web Services Security UsernameToken Profile 1.0
ユーザー名を含む UsernameToken は ID アサーションに使用されます。 ID アサーションは、信頼関係に基づいてユーザーの ID を確立します。
以下に、<UsernameToken> エレメントの構文の例を示します。
<wsse:UsernameToken wsu:Id="Example-1">
<wsse:Username>
...
</wsse:Username>
<wsse:Password Type="...">
...
</wsse:Password>
<wsse:Nonce EncodingType="...">
...
</wsse:Nonce>
<wsu:Created>
...
</wsu:Created>
</wsse:UsernameToken>
Web Services Security 仕様は、以下のパスワード・タイプを定義します。
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText (デフォルト)
- このタイプはユーザー名の実際のパスワードです。
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest
- このタイプは、ユーザー名のパスワードのダイジェストです。 値は、UTF8 エンコード・パスワードの base64 エンコード SHA1 ハッシュ値です。
WebSphere® Application Server は、デフォルトの PasswordText タイプをサポートします。しかし、パスワードのダイジェストはサポートしません。 これは、ほとんどのユーザー・レジストリー・セキュリティー・ポリシーがアプリケーション・ソフトウェアにパスワードを公開しないためです。
<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<S:Header>
...
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>Joe</wsse:Username>
<wsse:Password>ILoveJava</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</S:Header>
</S:Envelope>
OASIS: Web Services Security UsernameToken Profile 1.1
WebSphere Application Server は、Username Token Profile 1.0 およびバージョン 1.1 標準の両方をサポートしています。
WebSphere Application Server は次の機能をサポートしていません。
- Username Token Profile 仕様の両方のバージョンで、ダイジェスト・パスワード・タイプはサポートされていません。
- Username Token Profile 仕様の両方のバージョンで、パスワードに基づく鍵の派生はサポートされていません。
ポリシー・セットを使用して、管理コンソールで UsernameToken を構成できます。 また、Web Services Security API を使用してユーザー名トークンを SOAP メッセージに添付できます。次の図は、JAX-RPC および JAX-WS プログラミング・モデルのユーザー名トークンの作成と検証を説明したものです。
JAX-RPC における JAAS ログイン・モジュールと JAAS CallbackHandler を使用したユーザー名トークンの作成と検証

JAX-WS における JAAS ログイン・モジュールと JAAS CallbackHandler を使用したユーザー名トークンの作成と検証

ジェネレーター側で、JAAS LoginModule を使用してユーザー名トークンを作成し、JAAS CallbackHandler を使用して認証データを送ります。 JAAS LoginModule は UsernameToken オブジェクトを作成し、それを Web Service Security ランタイムに渡します。
コンシューマー側で、Username Token XML フォーマットは JAAS LoginModule に渡されて検証または認証され、JAAS CallbackHandler を使用してその認証データが Web Service Security ランタイムから JAAS LoginModule に渡されます。トークンが認証されたら、UsernameToken オブジェクトが作成され、Web Services Security のランタイムに渡されます。
以下の例では、ユーザー名トークンを作成するサンプル・コードが示されます。
WSSFactory factory = WSSFactory.getInstance();
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Attach the username token to the message.
UNTGenerationCallbackHandler ugCallbackHandler =
newUNTGenerationCallbackHandler("alice", "ecila");
SecurityToken ut = factory.newSecurityToken(ugCallbackHandler,
UsernameToken.class);
gencont.add(ut);
// Generate the WS-Security header
gencont.process(msgctx);