Re: org.apache.axis2.AxisFault: The security token could not be authenticated or authorized

Tania Marinova <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <[email protected]>
First thank you robert for everything; You really help me a lot and I want to appologise for taking your time

2. I finally decided to try this-

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


and so that is theproblem  - as i said I extract with no problem the stored in the database password and salt, but what may be the reason pwcb.getPassword() to be empty 


thank, thank you very much in advance robert





________________________________
 From: robert lazarski <[email protected]>
To: [email protected]; Tania Marinova <[email protected]> 
Sent: Wednesday, May 8, 2013 2:44 PM
Subject: Re: org.apache.axis2.AxisFault: The security token could not be authenticated or authorized
 

On Wed, May 8, 2013 at 8:34 AM, Tania Marinova <[email protected]> wrote:
> 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());
>
>      }

As I mentioned you are doing this the hard way. And having the salt as
a db column makes a hackers job significantly easier as the can use it
with a rainbow table. Anyways, you need to test for null like so:

private static String hash(String password, byte[] salt) throws Exception
  {
              if (salt == null) {
                  throw new Exception("salt is null");
              }
             SecretKeyFactory f =
SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
             if (f == null) {
                  throw new Exception("instance of SecretKeyFactory is null");
              }
              if (password == null || password.toCharArray() == null) {
                  throw new Exception("password is null");
              }
           KeySpec spec = new PBEKeySpec(password.toCharArray(), salt,
65536, 256);
           if(spec == null)  {
                  throw new Exception("KeySpec is null");
           }
           if (f.generateSecret(spec).getEncoded() == null) {
               throw new Exception("encoding is null");
           }
           System.out.println("returning with encoded String");
           return
Base64.encodeBase64String(f.generateSecret(spec).getEncoded());

  }

- R

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.