yes, the null point exception is in these rows 

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


and 

       

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




But the problem that drives me really mad is that I'm sure that I extract the 
password and salt from the database because I have tested getdataforchecking in 
java application and everything is fine
So I really don't know what to do?


and I should only use eclipse and axis2 

-----------------------------------
I've made some changes to my Passwordcallback class so here is again my code

 public void handle(Callback[] callbacks)   throws IOException,  
UnsupportedCallbackException 
  {
     
      for (int i = 0; i < callbacks.length; i++) 
       {          
         
        
            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
            try {
                pasandsalt = getdataforChecking();
          } catch (ClassNotFoundException e1) {
              // TODO Auto-generated catch block
              e1.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;
                 
             } 
         }
           
   }

  private static String hash(String password, byte[] salt) throws Exception     
  {  
             SecretKeyFactory f = 
SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
           KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 65536, 
256);
           return 
Base64.encodeBase64String(f.generateSecret(spec).getEncoded());
                   
     }
  
  
  public static String[] getdataforChecking() throws ClassNotFoundException
  {
      
      String[] arr = new String [2];
      Connection conn = null;
      Class.forName("org.postgresql.Driver");
        try 
        {
            conn = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/plovdivbizloca",
                    "postgres", "tan");
        }

        catch (SQLException ex) 
        {

            ex.printStackTrace();
        }
       
      
        Statement mystmt = null;
        String selectQuery = "select * from passwordforservice;";
        try 
        {
            mystmt = conn.createStatement();
            ResultSet mysr = mystmt.executeQuery(selectQuery);
            while (mysr.next()) 
            {
                arr[0] = mysr.getString(1);
                arr[1]= mysr.getString(2);
                
            }
            
        }
        
        
        catch (Exception ex) 
        {
            ex.printStackTrace();
            
        }
        return arr;

 
 
}

  }
  







________________________________
 From: robert lazarski <robertlazar...@gmail.com>
To: Tania Marinova <taniamm2...@yahoo.com> 
Cc: "java-user@axis.apache.org" <java-user@axis.apache.org> 
Sent: Wednesday, May 8, 2013 12:54 PM
Subject: Re: org.apache.axis2.AxisFault: The security token could not be 
authenticated or authorized
 

On Wed, May 8, 2013 at 3:06 AM, Tania Marinova <taniamm2...@yahoo.com> wrote:
>
> I store the hashed password but also the salt in a separate column (because
> I should hash then the plain text password with the same same hash)
>

IMHO you are not doing this correctly, you want to store the result of
the salt + hash, ie digest, in only one db column as a Base64 String.
Plus you are getting an NPE because either your password is null, or
the constructor of PBEKeySpec is throwing the NPE because your salt is
null. I can't tell from the stacktrace but the error is on line 68 of
your PWCB class.

As I mentioned in another email, I suggest using a higher level API
like Jasypt to create the digest, then only store that result in just
one column in the db.

- R

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
For additional commands, e-mail: java-user-h...@axis.apache.org

Reply via email to