/**
* 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.hadoop.gateway.picketlink.deploy;
/**
* Provides a serializable configuration file for adding to
* the webapp as an XML string for picketlink.xml
*
*/
public class PicketlinkConf {
public static final String INDENT = " ";
public static final String LT_OPEN = "<";
public static final String LT_CLOSE = "</";
public static final String GT = ">";
public static final String GT_CLOSE = "/>";
public static final String NL = "\n";
public static final String PICKETLINK_XMLNS = "urn:picketlink:identity-federation:config:2.1";
public static final String PICKETLINK_SP_XMLNS = "urn:picketlink:identity-federation:config:1.0";
public static final String C14N_METHOD = "http://www.w3.org/2001/10/xml-exc-c14n#";
public static final String KEYPROVIDER_ELEMENT = "KeyProvider";
public static final String KEYPROVIDER_CLASSNAME = "org.picketlink.identity.federation.core.impl.KeyStoreKeyManager";
public static final String AUTH_HANDLER_CLASSNAME = "org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler";
public static final String ROLE_GEN_HANDLER_CLASSNAME = "org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler";
public static final String PICKETLINK_ELEMENT = "PicketLink";
public static final String PICKETLINKSP_ELEMENT = "PicketLinkSP";
public static final String HANDLERS_ELEMENT = "Handlers";
public static final String HANDLER_ELEMENT = "Handler";
public static final String OPTION_ELEMENT = "Option";
public static final String VAL_ALIAS_ELEMENT = "ValidatingAlias";
public static final String AUTH_ELEMENT = "Auth";
private String serverEnvironment = "jetty";
private String bindingType = "POST";
private String idpUsesPostingBinding = "true";
private String supportsSignatures = "true";
private String identityURL = null;
private String serviceURL = null;
private String keystoreURL = null;
private String keystorePass = null;
private String signingKeyAlias = null;
private String signingKeyPass = null;
private String validatingKeyAlias = null;
private String validatingKeyValue = null;
private String nameIDFormat = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent";
private String clockSkewMilis = null;
private String assertionSessionAttributeName = "org.picketlink.sp.assertion";
public String getServerEnvironment() {
return serverEnvironment;
}
public void setServerEnvironment(String serverEnvironment) {
this.serverEnvironment = serverEnvironment;
}
public String getBindingType() {
return bindingType;
}
public void setBindingType(String bindingType) {
this.bindingType = bindingType;
}
public String getIdpUsesPostingBinding() {
return idpUsesPostingBinding;
}
public void setIdpUsesPostingBinding(String idpUsesPostingBinding) {
this.idpUsesPostingBinding = idpUsesPostingBinding;
}
public String getSupportsSignatures() {
return supportsSignatures;
}
public void setSupportsSignatures(String supportsSignatures) {
this.supportsSignatures = supportsSignatures;
}
public String getIdentityURL() {
return identityURL;
}
public void setIdentityURL(String identityURL) {
this.identityURL = identityURL;
}
public String getServiceURL() {
return serviceURL;
}
public void setServiceURL(String serviceURL) {
this.serviceURL = serviceURL;
}
public String getKeystoreURL() {
return keystoreURL;
}
public void setKeystoreURL(String keystoreURL) {
this.keystoreURL = keystoreURL;
}
public String getKeystorePass() {
return keystorePass;
}
public void setKeystorePass(String keystorePass) {
this.keystorePass = keystorePass;
}
public String getSigningKeyAlias() {
return signingKeyAlias;
}
public void setSigningKeyAlias(String signingKeyAlias) {
this.signingKeyAlias = signingKeyAlias;
}
public String getSigningKeyPass() {
return signingKeyPass;
}
public void setSigningKeyPass(String signingKeyPass) {
this.signingKeyPass = signingKeyPass;
}
public String getValidatingKeyAlias() {
return validatingKeyAlias;
}
public void setValidatingAliasKey(String validatingKeyAlias) {
this.validatingKeyAlias = validatingKeyAlias;
}
public String getValidatingKeyValue() {
return validatingKeyValue;
}
public void setValidatingAliasValue(String validatingKeyValue) {
this.validatingKeyValue = validatingKeyValue;
}
public String getNameIDFormat() {
return nameIDFormat;
}
public void setNameIDFormat(String nameIDFormat) {
this.nameIDFormat = nameIDFormat;
}
public String getClockSkewMilis() {
return clockSkewMilis;
}
public void setClockSkewMilis(String clockSkewMilis) {
this.clockSkewMilis = clockSkewMilis;
}
public String getAssertionSessionAttributeName() {
return assertionSessionAttributeName;
}
public void setAssertionSessionAttributeName(
String assertionSessionAttributeName) {
this.assertionSessionAttributeName = assertionSessionAttributeName;
}
@Override
public String toString() {
// THIS IS HORRID REPLACE WITH DOM+TRANSFORM
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>").append(NL)
.append(LT_OPEN).append(PICKETLINK_ELEMENT).append(" xmlns=\"").append(PICKETLINK_XMLNS).append("\"" + GT).append(NL)
.append(INDENT).append(LT_OPEN).append(PICKETLINKSP_ELEMENT).append(" xmlns=\"").append(PICKETLINK_SP_XMLNS + "\"").append(NL)
.append(INDENT).append(INDENT).append("ServerEnvironment").append("=\"").append(serverEnvironment).append("\"").append(NL)
.append(INDENT).append(INDENT).append("BindingType").append("=\"").append(bindingType).append("\"").append(NL)
.append(INDENT).append(INDENT).append("IDPUsesPostBinding").append("=\"").append(idpUsesPostingBinding).append("\"").append(NL)
.append(INDENT).append(INDENT).append("SupportsSignatures").append("=\"").append(supportsSignatures).append("\"").append(NL)
.append(INDENT).append(INDENT).append("CanonicalizationMethod").append("=\"").append(C14N_METHOD).append("\"").append(GT).append(NL).append(NL)
.append(INDENT).append(INDENT).append(LT_OPEN).append("IdentityURL").append(GT).append(identityURL).append(LT_CLOSE).append("IdentityURL").append(GT).append(NL)
.append(INDENT).append(INDENT).append(LT_OPEN).append("ServiceURL").append(GT).append(serviceURL).append(LT_CLOSE).append("ServiceURL").append(GT).append(NL)
.append(INDENT).append(INDENT).append(LT_OPEN).append(KEYPROVIDER_ELEMENT).append(" ").append("ClassName=\"").append(KEYPROVIDER_CLASSNAME + "\"" + GT).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(AUTH_ELEMENT).append(" Key=\"KeyStoreURL\" Value=\"").append(keystoreURL).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(AUTH_ELEMENT).append(" Key=\"KeyStorePass\" Value=\"").append(keystorePass).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(AUTH_ELEMENT).append(" Key=\"SigningKeyAlias\" Value=\"").append(signingKeyAlias).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(AUTH_ELEMENT).append(" Key=\"SigningKeyPass\" Value=\"").append(signingKeyPass).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(VAL_ALIAS_ELEMENT).append(" Key=\"").append(validatingKeyAlias).append("\" Value=\"").append(validatingKeyValue).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(LT_CLOSE).append(KEYPROVIDER_ELEMENT).append(GT).append(NL)
.append(INDENT).append(LT_CLOSE).append(PICKETLINKSP_ELEMENT).append(GT).append(NL)
.append(INDENT).append(LT_OPEN).append(HANDLERS_ELEMENT).append(GT).append(NL)
.append(INDENT).append(INDENT).append(LT_OPEN).append(HANDLER_ELEMENT).append(" class=\"").append(AUTH_HANDLER_CLASSNAME).append("\">").append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(OPTION_ELEMENT).append(" Key=\"NAMEID_FORMAT\" Value=\"").append(nameIDFormat).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(OPTION_ELEMENT).append(" Key=\"CLOCK_SKEW_MILIS\" Value=\"").append(clockSkewMilis).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(INDENT).append(LT_OPEN).append(OPTION_ELEMENT).append(" Key=\"ASSERTION_SESSION_ATTRIBUTE_NAME\" Value=\"").append(assertionSessionAttributeName).append("\"").append(GT_CLOSE).append(NL)
.append(INDENT).append(INDENT).append(LT_CLOSE).append(HANDLER_ELEMENT).append(GT).append(NL)
.append(INDENT).append(INDENT).append(LT_OPEN).append(HANDLER_ELEMENT).append(" class=\"").append(ROLE_GEN_HANDLER_CLASSNAME).append("\"/>").append(NL)
.append(INDENT).append(LT_CLOSE).append(HANDLERS_ELEMENT).append(GT).append(NL)
.append(LT_CLOSE).append(PICKETLINK_ELEMENT).append(GT).append(NL);
return xml.toString();
}
public static void main(String[] args) {
PicketlinkConf conf = new PicketlinkConf();
System.out.println(conf.toString());
}
}