blob: 719cbbb6946e643f328094c69255b5b04856775d [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.sling.auth.saml2.impl;
import org.apache.sling.auth.core.spi.DefaultAuthenticationFeedbackHandler;
import org.apache.sling.auth.saml2.AuthenticationHandlerSAML2Config;
import java.util.HashMap;
import java.util.Map;
abstract class AbstractSamlHandler extends DefaultAuthenticationFeedbackHandler {
// OSGI Configs
private String path;
private String saml2SessAttr;
private String saml2IDPDestination;
private boolean saml2SPEnabled = false;
private boolean saml2SPEncryptAndSign = false;
private String uidAttrName;
private String samlUserHome;
private String groupMembershipName;
private String entityID;
private String jksFileLocation;
private String jksStorePassword;
private String spKeysAlias;
private String spKeysPassword;
private String idpCertAlias;
private String acsPath;
private String[] syncAttrs;
private String saml2LogoutURL;
private Map syncAttrMap;
public static final String GOTO_URL_SESSION_ATTRIBUTE = "gotoURL";
public static final String SAML2_REQUEST_ID = "saml2RequestID";
public static final String AUTHENTICATED_SESSION_ATTRIBUTE = "authenticated";
void setConfigs(final AuthenticationHandlerSAML2Config config){
this.path = config.path();
this.saml2SessAttr = config.saml2SessionAttr();
this.saml2SPEnabled = config.saml2SPEnabled();
this.saml2SPEncryptAndSign = config.saml2SPEncryptAndSign();
this.saml2IDPDestination = config.saml2IDPDestination();
this.uidAttrName = config.saml2userIDAttr();
this.samlUserHome = config.saml2userHome();
this.groupMembershipName = config.saml2groupMembershipAttr();
this.entityID = config.entityID();
this.jksFileLocation = config.jksFileLocation();
this.jksStorePassword = config.jksStorePassword();
this.spKeysAlias = config.spKeysAlias();
this.spKeysPassword = config.spKeysPassword();
this.idpCertAlias = config.idpCertAlias();
this.acsPath = config.acsPath();
this.syncAttrs = config.syncAttrs();
this.saml2LogoutURL = config.saml2LogoutURL();
setSyncMap();
}
// GETTERS
String getSaml2Path() {
return this.path;
}
String getSaml2userIDAttr() {
return this.uidAttrName;
}
String getSaml2userHome() {
return this.samlUserHome;
}
String getSaml2groupMembershipAttr() {
return this.groupMembershipName;
}
String getSaml2SessionAttr() {
return this.saml2SessAttr;
}
String getSaml2IDPDestination() {
return this.saml2IDPDestination;
}
String getEntityID() {
return this.entityID;
}
String getAcsPath() {
return this.acsPath;
}
boolean getSaml2SPEnabled() {
return this.saml2SPEnabled;
}
boolean getSaml2SPEncryptAndSign() {
return this.saml2SPEncryptAndSign;
}
String getSaml2LogoutURL() {
return this.saml2LogoutURL;
}
String getJksFileLocation() {
return this.jksFileLocation;
}
String getJksStorePassword() {
return this.jksStorePassword;
}
String getSpKeysAlias() {
return this.spKeysAlias;
}
String getSpKeysPassword() {
return this.spKeysPassword;
}
String getIdpCertAlias() {
return this.idpCertAlias;
}
String[] getSyncAttrs() {
return this.syncAttrs;
}
Map<String,String> getSyncAttrMap(){ return this.syncAttrMap; }
String getACSURL() {
final String domain = entityID.endsWith("/") ? entityID.substring(0, entityID.length()-1) : entityID;
return domain + this.getAcsPath();
}
void setSyncMap(){
this.syncAttrMap = new HashMap<>();
for(String attr : getSyncAttrs()){
String[] parts = attr.split("=");
if(parts != null && parts.length==2){
this.syncAttrMap.put(parts[0],parts[1]);
}
}
}
}