blob: 3d6088081de1fac0980c3f4feb05bcd9646e9929 [file] [log] [blame]
/**
* 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.wss4j.stax.test;
import java.io.IOException;
import java.security.cert.X509Certificate;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.saml.builder.SAML1Constants;
public class CallbackHandlerImpl implements CallbackHandler {
private String username = "default";
private byte[] secret;
public enum Statement {
AUTHN, ATTR, AUTHZ
}
private String subjectName = "uid=joe,ou=people,ou=saml-demo,o=example.com";
private String subjectQualifier = "www.example.com";
private String confirmationMethod = SAML1Constants.CONF_SENDER_VOUCHES;
private X509Certificate[] certs;
private byte[] ephemeralKey = null;
private String issuer = null;
public CallbackHandlerImpl() {
}
public CallbackHandlerImpl(String username) {
if (username != null) {
this.username = username;
}
}
public CallbackHandlerImpl(byte[] secret) {
this.secret = secret;
}
@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
if (callbacks[0] instanceof WSPasswordCallback) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
if (pc.getUsage() == WSPasswordCallback.DECRYPT
|| pc.getUsage() == WSPasswordCallback.SIGNATURE
|| pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN
) {
pc.setPassword(username);
} else if (pc.getUsage() == WSPasswordCallback.SECRET_KEY
|| pc.getUsage() == WSPasswordCallback.SECURITY_CONTEXT_TOKEN) {
pc.setKey(secret);
} else if (pc.getUsage() == WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD) {
pc.setPassword("this-is-a-secret");
} else {
throw new UnsupportedCallbackException(pc, "Unrecognized CallbackHandlerImpl");
}
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getSubjectQualifier() {
return subjectQualifier;
}
public void setSubjectQualifier(String subjectQualifier) {
this.subjectQualifier = subjectQualifier;
}
public String getConfirmationMethod() {
return confirmationMethod;
}
public void setConfirmationMethod(String confirmationMethod) {
this.confirmationMethod = confirmationMethod;
}
public X509Certificate[] getCerts() {
return certs;
}
public void setCerts(X509Certificate[] certs) {
this.certs = certs;
}
public byte[] getEphemeralKey() {
return ephemeralKey;
}
public void setEphemeralKey(byte[] ephemeralKey) {
this.ephemeralKey = ephemeralKey;
}
public String getIssuer() {
return issuer;
}
public void setIssuer(String issuer) {
this.issuer = issuer;
}
public byte[] getSecret() {
return secret;
}
public void setSecret(byte[] secret) {
this.secret = secret;
}
}