Author: coheigea
Date: Tue Dec  7 17:41:41 2010
New Revision: 1043139

URL: http://svn.apache.org/viewvc?rev=1043139&view=rev
Log:
[WSS-250] - New CallbackHandler implementation for encoded passwords.

Added:
    
webservices/wss4j/trunk/src/test/java/org/apache/ws/security/common/EncodedPasswordCallbackHandler.java

Added: 
webservices/wss4j/trunk/src/test/java/org/apache/ws/security/common/EncodedPasswordCallbackHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/test/java/org/apache/ws/security/common/EncodedPasswordCallbackHandler.java?rev=1043139&view=auto
==============================================================================
--- 
webservices/wss4j/trunk/src/test/java/org/apache/ws/security/common/EncodedPasswordCallbackHandler.java
 (added)
+++ 
webservices/wss4j/trunk/src/test/java/org/apache/ws/security/common/EncodedPasswordCallbackHandler.java
 Tue Dec  7 17:41:41 2010
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ws.security.common;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+/**
+ * A Callback Handler implementation for the case of processing a Username 
Token with an
+ * encoded password.
+ */
+public class EncodedPasswordCallbackHandler implements CallbackHandler {
+    
+    public void handle(Callback[] callbacks)
+        throws IOException, UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            if (callbacks[i] instanceof WSPasswordCallback) {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+                switch (pc.getUsage()) {
+                case WSPasswordCallback.USERNAME_TOKEN: {
+                    if ("wernerd".equals(pc.getIdentifier())) {
+                        // Base64 encoded SHA-1 hash of "verySecret"
+                        pc.setPassword("hGqoUreBgahTJblQ3DbJIkE6uNs=");
+                    }
+                    break;
+                }
+                case WSPasswordCallback.USERNAME_TOKEN_UNKNOWN: {
+                    if ("bob".equals(pc.getIdentifier())) {
+                        // Base64 encoded SHA-1 hash of "security"
+                        pc.setPassword("jux7xGGAjguKKHg9C+waOiLrCCE=");
+                    } else {
+                        throw new IOException("Authentication failed");
+                    }
+                    break;
+                }
+                default:
+                    throw new IOException("Authentication failed");
+                }
+            } else {
+                throw new UnsupportedCallbackException(callbacks[i], 
"Unrecognized Callback");
+            }
+        }
+    }
+}


Reply via email to