почему pwcb.getPassword имеет значение null в этом коде

Я пытаюсь добавить защиту вала в свою веб-службу оси 2, используя модуль вала.

Итак, вот что я сделал:

  1. Я сохранил в базе данных хешированное значение пароля "bobWWW" и соль

В моем классе PWCBHandler.java

• Я выбираю сохраненный в базе пароль и хэш

• Я пытаюсь хешировать с помощью того же алгоритма pwcb.getPassword() с той же сохраненной солью

•проверьте, равен ли этот новый хешированный пароль сохраненному паролю

Но я постоянно получал исключение nullpointerexception, поэтому решил проверить и написал этот код

if(pwcb.getPassword()==null)
{
   try {
        throw new Exception ("passwordget pass null" +pwcb.getPassword());
        } 
        catch (Exception e) 
        {
           // TODO Auto-generated catch block
        e.printStackTrace();
         }
}

И я вижу, что pwcb.getPassword() пуст. Итак, вот код PWCBHandler.java

public void handle(Callback[] callbacks)   throws IOException,  UnsupportedCallbackException 
  {

      for (int i = 0; i < callbacks.length; i++) 
       {          
            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
            try {
              pasandsalt = getdataforChecking();



            if(pwcb.getPassword()==null)
            {

                try {
                    throw new Exception ("passwordget pass null" +pwcb.getPassword());
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }



            try {
                passwordforchecking = hash(pwcb.getPassword(),Base64.decodeBase64(pasandsalt[1]));


            } catch (Exception e) {

                // TODO Auto-generated catch block
                e.printStackTrace();
            }





             if((pwcb.getIdentifier().equals("bob")) && (passwordforchecking.equals(pasandsalt[0])) ) 
             {
                return;

             } 
         }

А вот мой soaprequest с заголовком sequeiry

 var sr =  
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<soapenv:Envelope " + 

                 "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
                 "xmlns:nilo=\"http://nilo\">"+
                  "<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">bobWWW</wsse:Password>'+
                  '</wsse:UsernameToken>'+
                  '</wsse:Security>'+
                  "</soapenv:Header>"+
                  "<soapenv:Body>" +
                  "<nilo:getdataForChecking>" +
                  '<nilo:data>'+tranXml+'</nilo:data>' +

                   ' </nilo:getdataForChecking>'+

                    '</soapenv:Body>' +



                  '</soapenv:Envelope>';

person Tania Marinova    schedule 08.05.2013    source источник


Ответы (1)


Согласно вашим заголовкам мыла, я вижу, что вы используете обычный текстовый пароль вместо дайджеста пароля. Возможно, вам придется изменить конфигурацию вала

<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bobWWW</wsse:Password>

это может быть полезно для вас. http://wso2.com/library/240/

person Chamila Adhikarinayake    schedule 23.04.2014