Web Services Security 許可モデル
サーブレットまたは Enterprise JavaBeans (EJB) として実装されたプロバイダー・アプリケーションは、Web サービスを使用し、Web サービス・セキュリティーによる保護を受けることができます。 Java Platform Enterprise Edition (Java EE) のロール・ベースの許可は、サーブレットまたは EJB のいずれかとして実装される、Web サービス・プロバイダー・アプリケーションへのアクセスを制御するために使用できます。 サーブレットと EJB の実装のセキュリティー・ロールは同じように構成されますが、サービスへのアクセスは実装ごとに異なります。
- セキュリティー・トークンは、SOAP 要求の HTTP ヘッダーで渡されます。
- Web コンテナーは、セキュリティー・トークンを認証し、ユーザーのロール・ベースの許可を実行します。
- ユーザー許可に成功すると、Web コンテナーはインバウンド・メッセージで Web サービス・エンジンを呼び出します。
以下の図は、サーブレットに対するロール・ベースの許可プロセスの各ステップがどこで実行されているかを示しています。

- ユーザー ID のセキュリティー・トークンは、SOAP 要求のセキュリティー・ヘッダーで渡されます。
- Web サービス・セキュリティーにより、トークンが認証されます。
- 呼び出し元の構成で、Web サービス・セキュリティーは、現行スレッドで認証済みトークンの ID を設定します。
- エンドポイントが Web サービス・エンジンによって呼び出されると、EJB コンテナーは、現行スレッドで ID に対するロール・ベースの許可を実行します。
以下の図は、EJB に対するロール・ベースの許可プロセスの各ステップがどこで実行されているかを示しています。

Web サービス・プロバイダーがサーブレットとして実装されている場合、Web サービス・セキュリティーが SOAP 要求のセキュリティー・ヘッダーで受け渡すトークンは、サービスへのアクセスのロール・ベースの許可には使用できません。
Web サービス・プロバイダーが EJB として実装されている場合、Web サービス・セキュリティーが SOAP 要求のセキュリティー・ヘッダーで受け渡すトークンは、アクティブな Web サービス・セキュリティー制約にそのトークン用の呼び出し元構成があれば、EJB コンテナーによりサービスへのアクセスのために、ロール・ベースの許可にのみ使用できます。
EJB として実装されている Web サービス・プロバイダーは、Web コンテナーを使用してロール・ベースの許可を実行することもできます。 これを実行するために、図 Web サービス・セキュリティーの EJB 許可 で示されているルーター・サーブレットは、HTTP 基本認証によって保護されます。 これを行うと、プロセスは図 Web サービス・セキュリティーのサーブレット許可 で示されているように続行します。
アクティブな Web サービス・セキュリティー制約に、インバウンド・トークンの呼び出し元構成がある場合、そのトークンは、現行スレッド上のセキュリティー・コンテキストで runAs ID として設定されます。 保護されたプロバイダー・アプリケーション自体は、その ID に基づいて許可の決定を行うことができます。 これはサーブレットと EJB の両方に適用されます。