プログラミングによるセキュリティ
WebLogic Workshop は、ユーザのグループ、その他のセキュリティ パラメータを基に Web サービスの動作を変更できるように、WebLogic のセキュリティ API をサポートしています。API は Web サービス コード内に表示され、ユーザがサーブレットのセキュリティ ゲートを通った後に実行されます。サーブレット制御のセキュリティ モデルは宣言的セキュリティで説明しています。
クライアントがサーブレットのセキュリティ ゲートを通ると、Web サービス コードでクライアント グループとセキュリティ パーミッションにアクセスし、個々のメソッドおよび操作を認証したり、クライアントを基に Web サービスの動作を変更することができます。クライアントの検索は、次に示すように、JwsContext インタフェースのメソッドで行われます。
public interface JwsContext { public java.security.Principal getCallerPrincipal(); public Boolean isCallerInRole( String roleName ); }
getCallerPrincipal() メソッドを使用して、呼び出し側を識別するプリンシパルを検索できます。isCallerInRole() を使用すると、指定した呼び出し側が指定ロール内にあるかどうかを判定できます。
外部 Web サービスに対するメソッド呼び出しと共に認証資格を送信する場合は、以下の 3 つの方法のいずれかで資格を添付できます。
メソッド呼び出しがサービス コントロールを介して送信される場合は、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"
メソッド呼び出しがコールバック インタフェースを介して送信される場合、つまりサービスが外部サービスに対してコールバックを発行する場合は、JwsContext オブジェクトの以下のメソッドを使用します。
public interface JwsContext { public void setCallbackUsername( String username ); public void setCallbackPassword( String password ); public String getCallbackUsername(); public String getCallbackPassword(); }
また、サービス コントロールやコールバック インタフェースのエンドポイント URL の中に資格をエンコードすることによって、送信されるメッセージに対して資格を指定できます。資格が含まれた URL の形式は以下のようになります。
<protocol>://<username>:<password>@<host>:<port>/...
このような URL で ServiceControl.setEndPoint() と JwsContext.setCallbackURL() の両方を呼び出すことができます。送信されるメソッド呼び出しメッセージがパッケージ化されると、現在のユーザ名とパスワードが現在のプロトコルに対してエンコードされ、呼び出しメッセージとともに送信されます。