プログラミングによるセキュリティ

WebLogic Workshop は、ユーザのグループ、その他のセキュリティ パラメータを基に Web サービスの動作を変更できるように、WebLogic のセキュリティ API をサポートしています。API は Web サービス コード内に表示され、ユーザがサーブレットのセキュリティ ゲートを通った後に実行されます。サーブレット制御のセキュリティ モデルは宣言的セキュリティで説明しています。

Web サービス コード内でクライアントを認証する

クライアントがサーブレットのセキュリティ ゲートを通ると、Web サービス コードでクライアント グループとセキュリティ パーミッションにアクセスし、個々のメソッドおよび操作を認証したり、クライアントを基に Web サービスの動作を変更することができます。クライアントの検索は、次に示すように、JwsContext インタフェースのメソッドで行われます。

public interface JwsContext
	{
	public java.security.Principal getCallerPrincipal();
	public Boolean isCallerInRole( String roleName );
	}

getCallerPrincipal() メソッドを使用して、呼び出し側を識別するプリンシパルを検索できます。isCallerInRole() を使用すると、指定した呼び出し側が指定ロール内にあるかどうかを判定できます。

送信メッセージとともに資格を送信する

外部 Web サービスに対するメソッド呼び出しと共に認証資格を送信する場合は、以下の 3 つの方法のいずれかで資格を添付できます。

  1. メソッド呼び出しがサービス コントロールを介して送信される場合は、ServiceControl インタフェースの以下のメソッドを使用します。

public interface ServiceControl { public void setUsername(String username); public void setPassword(String password); public String getUsername(); public String getPassword(); }

注意 : サービス コントロールを介してセキュアなサービスを呼び出すには、@jws:location コメントの http-url プロパティが完全修飾の HTTPS URL を指定するよう、サービス CTRL ファイルを変更する必要があります。たとえば、サービス コントロールを介して HelloWorldSecure サービスを呼び出す場合は、CTRL ファイルを次のように変更する必要があります。
@jws:location http-url="https://localhost:7002/samples/HelloWorldSecure.jws"
 

  1. メソッド呼び出しがコールバック インタフェースを介して送信される場合、つまりサービスが外部サービスに対してコールバックを発行する場合は、JwsContext オブジェクトの以下のメソッドを使用します。

public interface JwsContext { public void setCallbackUsername( String username ); public void setCallbackPassword( String password ); public String getCallbackUsername(); public String getCallbackPassword(); }

  1. また、サービス コントロールやコールバック インタフェースのエンドポイント URL の中に資格をエンコードすることによって、送信されるメッセージに対して資格を指定できます。資格が含まれた URL の形式は以下のようになります。

<protocol>://<username>:<password>@<host>:<port>/...

このような URL で ServiceControl.setEndPoint() と JwsContext.setCallbackURL() の両方を呼び出すことができます。送信されるメソッド呼び出しメッセージがパッケージ化されると、現在のユーザ名とパスワードが現在のプロトコルに対してエンコードされ、呼び出しメッセージとともに送信されます。

関連トピック

セキュリティ