0
  • Glassfish サーバーには 2 つの Web アプリケーションがデプロイされています。
  • どちらの Web アプリケーションも REST Web サービスを提供します。
  • 両方の Web サービスへのアクセスは、glassfish のセキュリティ制約 (現時点では BASIC Auth と file-realm) によって保護されています。

ユーザーが Web アプリケーション A のサービスにアクセスしているとします。ユーザーが承認された後、サービス A は REST クライアント経由でサービス B を呼び出したいと考えています。

サービスが glasfish サーバーに対して既に承認されているユーザーになりすます方法はありますか? セキュリティ コンテキストの転送やヘッダーの編集などでしょうか。別のフィルターはありますか?

@Context
private SecurityContext securityContext;

username = securityContext.getUserPrincipal().getName();
password = ???    

client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username, password));

ありがとう!

4

1 に答える 1

0

認証スキームによって異なりますが、場合によっては、サービス A が受信した Authorization ヘッダーを抽出してサービス B に渡すことを検討できます。これは基本認証で機能します。

次のスニペットのように、 @HeaderParam を使用してそれを行うことができるはずです。

@GET
@Path("/resourceA")
public void doSomething(@HeaderParam("Authorization") String authorization) {
  // now I can call resourceB and use 'authorization'
}
于 2012-12-13T10:33:55.563 に答える