こんにちは、私はJAX-WS を使用したアプリケーション認証に関するチュートリアルを読んでいます。要するに、次のようになります。
@Override
public String getHelloWorldAsString() {
MessageContext mctx = wsctx.getMessageContext();
//get detail from request headers
Map http_headers = (Map) mctx.get(MessageContext.HTTP_REQUEST_HEADERS);
List userList = (List) http_headers.get("Username");
List passList = (List) http_headers.get("Password");
String username = "";
String password = "";
if(userList!=null){
//get username
username = userList.get(0).toString();
}
if(passList!=null){
//get password
password = passList.get(0).toString();
}
//Should validate username and password with database
if (username.equals("mkyong") && password.equals("password")){
return "Hello World JAX-WS - Valid User!";
}else{
return "Unknown User!";
}
}
ご覧のとおり、メソッドは認証をチェックし、それに応じて結果を返しますが、これは、すべての Web サービス メソッドが認証をチェックする必要があることを意味します。
基本的に、承認が一度だけ行われるようにする方法を知りたいですか? (クライアントのログイン時)。
いくつかの簡単なアイデアがありました。
login()
1) 間違ったログインの場合に返される単一のメソッドのみを許可する Web サービスを作成するnull
か、他のすべてのメソッド (つまり、Web サービスの機能を構成する) を持つ別のクラスのオブジェクト インスタンスを許可します。したがって、認証が渡されない限り、クライアントは Web サービス メソッドにアクセスできません。
2) 私が目にするもう 1 つの方法は、おそらく一方向クライアント SSL ですか? (トランスポート レベル セキュリティの構成)
これはどのように行うべきですか、それとも何か不足していますか?
もう少し背景として、JPAをデータベースマネージャー/パーシスターとして使用してdbなどを照会するメソッドを持つWebサービス(jax-ws)があります。私のクライアントは Swing UI と連携し、Web サービスに接続します。