Fixed #SWS-56: Digest passwords are never accepted in the SimplePasswordValidationCallbackHandler

This commit is contained in:
Arjen Poutsma
2006-09-30 09:24:33 +00:00
parent 2c167af5ed
commit 751f270e72
2 changed files with 13 additions and 19 deletions

View File

@@ -16,20 +16,18 @@
package org.springframework.ws.soap.security.xwss.callback;
import com.sun.xml.wss.impl.callback.PasswordValidationCallback;
import com.sun.xml.wss.impl.callback.TimestampValidationCallback;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.UnsupportedCallbackException;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.UnsupportedCallbackException;
import com.sun.xml.wss.impl.callback.PasswordValidationCallback;
import com.sun.xml.wss.impl.callback.TimestampValidationCallback;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
/**
* Simple callback handler that validates passwords agains a in-memory <code>Properties</code> object. Password
* validation is done on a case-sensitive basis.
@@ -60,21 +58,17 @@ public class SimplePasswordValidationCallbackHandler extends AbstractCallbackHan
PasswordValidationCallback passwordCallback = (PasswordValidationCallback) callback;
if (passwordCallback.getRequest() instanceof PasswordValidationCallback.PlainTextPasswordRequest) {
passwordCallback.setValidator(new SimplePlainTextPasswordValidator());
}
else if (passwordCallback.getRequest() instanceof PasswordValidationCallback.DigestPasswordRequest) {
} else if (passwordCallback.getRequest() instanceof PasswordValidationCallback.DigestPasswordRequest) {
PasswordValidationCallback.DigestPasswordRequest digestPasswordRequest =
(PasswordValidationCallback.DigestPasswordRequest) passwordCallback.getRequest();
String password = users.getProperty(digestPasswordRequest.getUsername());
digestPasswordRequest.setPassword(password);
passwordCallback.setValidator(new PasswordValidationCallback.DigestPasswordValidator());
}
passwordCallback.setValidator(new SimplePlainTextPasswordValidator());
}
else if (callback instanceof TimestampValidationCallback) {
} else if (callback instanceof TimestampValidationCallback) {
TimestampValidationCallback timestampCallback = (TimestampValidationCallback) callback;
timestampCallback.setValidator(new DefaultTimestampValidator());
}
else {
} else {
throw new UnsupportedCallbackException(callback);
}
}

View File

@@ -16,11 +16,11 @@
package org.springframework.ws.soap.security.xwss.callback;
import java.util.Properties;
import com.sun.xml.wss.impl.callback.PasswordValidationCallback;
import junit.framework.TestCase;
import java.util.Properties;
public class SimplePasswordValidationCallbackHandlerTest extends TestCase {
private SimplePasswordValidationCallbackHandler handler;
@@ -69,7 +69,7 @@ public class SimplePasswordValidationCallbackHandlerTest extends TestCase {
PasswordValidationCallback callback = new PasswordValidationCallback(request);
handler.handleInternal(callback);
boolean authenticated = callback.getResult();
assertFalse("Authenticated", authenticated);
assertTrue("Authenticated", authenticated);
}