2

Apache Rampart 構成では、Rampart エンジンがユーザー名トークンを作成し、メッセージを送信するときに署名を作成するために必要なパスワードを提供するために使用できるパスワード コールバック ハンドラ クラスを提供できることを知っています。Rampart エンジンがユーザー名トークンを作成するためにパスワードを必要とするときはいつでも、Rampart 構成のパラメーターから抽出した適切な識別子を設定する WSPasswordCallback インスタンスを作成し、handle メソッドを介してパスワード コールバック クラスに渡すと書かれています。しかし、ご覧のとおり、ポリシー ベースの構成を使用しました。

そのため、すべてを理解しているかどうかを確認するために、いくつか質問があります。

  1. 城壁エンジンが適切なユーザー名を抽出する場所から私はいますか -wsse:Username>bob</wsse:Username>'+

  2. それを抽出した後、handle メソッドを介して PWCBHandler クラスに渡します。ユーザー名が正しい場合、ハンドル メソッドは適切なパスワードを設定します。

  3. そして最も重要なことは、最後に JavaScript から Web サービスを使用する必要があるため、SOAP リクエストを提供したことです。しかし、ご覧のとおり、ユーザー名とパスワードの両方を提供していますが、誰もが私のユーザー名とパスワードを見ることができるため、セキュリティがどこにあるのかわかりません。これは正しいですか。どうすればより安全にできますか。

これが私のコードです。


  1. PassWordCallback.java クラスのコードは次のとおりです。

    ublic void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) {

             WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
            if(pwcb.getIdentifier().equals("test") &&pwcb.getPassword().equals("pass")) {
                return;
             } 
    
            else {
                throw new UnsupportedCallbackException(callbacks[i],"Incorrect login/password");
             }
         }
     }
    

これがjavascriptからのsoaprequestです

 "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<soapenv:Envelope " + 
                     "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
                     "xmlns:tan=\"http://tan\">"+
                    "<soapenv:Header>"+
                     '<wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" soapenv:mustUnderstand="1">'+
'<wsse:UsernameToken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="123">'+
'<wsse:Username>bob</wsse:Username>'+
'<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bobPW</wsse:Password>'+
'</wsse:UsernameToken>'+
'</wsse:Security>'+
"</soapenv:Header>"+
                    "<soapenv:Body>" +
                     "<tan:testws>" +
                     '<tan:x>ECHOO</tan:x>' +
                      ' </tan:testws>'+

                    '</soapenv:Body>' +
                '</soapenv:Envelope>';
4

1 に答える 1