| /** |
| * 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.common.saml; |
| |
| import org.apache.wss4j.common.crypto.Crypto; |
| import org.apache.wss4j.common.saml.bean.AdviceBean; |
| import org.apache.wss4j.common.saml.bean.AttributeStatementBean; |
| import org.apache.wss4j.common.saml.bean.AuthDecisionStatementBean; |
| import org.apache.wss4j.common.saml.bean.AuthenticationStatementBean; |
| import org.apache.wss4j.common.saml.bean.ConditionsBean; |
| import org.apache.wss4j.common.saml.bean.SubjectBean; |
| import org.apache.wss4j.common.saml.bean.Version; |
| import org.opensaml.saml.common.SAMLVersion; |
| import org.w3c.dom.Element; |
| |
| import javax.security.auth.callback.Callback; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| |
| /** |
| * Class SAMLCallback will be called by the <code>SamlAssertionWrapper</code> during the creation |
| * of SAML statements (authentication, attribute, and authz decision). Alternatively, the |
| * "assertionElement" member of this class can be set instead, for a pre-existing SAML |
| * Assertion. |
| */ |
| public class SAMLCallback implements Callback { |
| |
| /** |
| * The SAML Version of the Assertion to create |
| */ |
| private SAMLVersion samlVersion; |
| |
| /** |
| * SAML subject representation |
| */ |
| private SubjectBean subject; |
| |
| /** |
| * The issuer of the Assertion |
| */ |
| private String issuer; |
| |
| /** |
| * The issuer format of the Assertion |
| */ |
| private String issuerFormat; |
| |
| /** |
| * The issuer qualifier of the Assertion |
| */ |
| private String issuerQualifier; |
| |
| /** |
| * SAML Conditions representation |
| */ |
| private ConditionsBean conditions; |
| |
| /** |
| * SAML Advice representation |
| */ |
| private AdviceBean advice; |
| |
| /** |
| * A list of <code>AuthenticationStatementBean</code> values |
| */ |
| private List<AuthenticationStatementBean> authenticationStatementData; |
| |
| /** |
| * A list of <code>AttributeStatementBean</code> values |
| */ |
| private List<AttributeStatementBean> attributeStatementData; |
| |
| /** |
| * A list of <code>AuthDecisionStatementBean</code> values |
| */ |
| private List<AuthDecisionStatementBean> authDecisionStatementData; |
| |
| /** |
| * A DOM Element representation of this SAML Assertion |
| */ |
| private Element assertionElement; |
| |
| private boolean signAssertion; |
| |
| private String issuerKeyName; |
| |
| private String issuerKeyPassword; |
| |
| private Crypto issuerCrypto; |
| |
| private boolean sendKeyValue; |
| |
| private String canonicalizationAlgorithm; |
| |
| private String signatureAlgorithm; |
| |
| private String signatureDigestAlgorithm; |
| |
| /** |
| * Constructor SAMLCallback creates a new SAMLCallback instance. |
| */ |
| public SAMLCallback() { |
| authenticationStatementData = new ArrayList<>(); |
| attributeStatementData = new ArrayList<>(); |
| authDecisionStatementData = new ArrayList<>(); |
| } |
| |
| /** |
| * Method getAuthenticationStatementData returns the authenticationStatementData of this |
| * SAMLCallback object. |
| * |
| * @return the authenticationStatementData (type List<AuthenticationStatementBean>) of |
| * this SAMLCallback object. |
| */ |
| public List<AuthenticationStatementBean> getAuthenticationStatementData() { |
| return authenticationStatementData; |
| } |
| |
| /** |
| * Method setAuthenticationStatementData sets the authenticationStatementData of this |
| * SAMLCallback object. |
| * |
| * @param authenticationStatementData the authenticationStatementData of this |
| * SAMLCallback object. |
| */ |
| public void setAuthenticationStatementData( |
| List<AuthenticationStatementBean> authenticationStatementData |
| ) { |
| this.authenticationStatementData = authenticationStatementData; |
| } |
| |
| /** |
| * Method getAttributeStatementData returns the attributeStatementData of this |
| * SAMLCallback object. |
| * |
| * @return the attributeStatementData (type List<AttributeStatementBean>) of this |
| * SAMLCallback object. |
| */ |
| public List<AttributeStatementBean> getAttributeStatementData() { |
| return attributeStatementData; |
| } |
| |
| /** |
| * Method setAttributeStatementData sets the attributeStatementData of this SAMLCallback object. |
| * |
| * @param attributeStatementData the attributeStatementData of this SAMLCallback object. |
| */ |
| public void setAttributeStatementData(List<AttributeStatementBean> attributeStatementData) { |
| this.attributeStatementData = attributeStatementData; |
| } |
| |
| /** |
| * Method getAuthDecisionStatementData returns the authDecisionStatementData of this |
| * SAMLCallback object. |
| * |
| * @return the authDecisionStatementData (type List<AuthDecisionStatementBean>) of this |
| * SAMLCallback object. |
| */ |
| public List<AuthDecisionStatementBean> getAuthDecisionStatementData() { |
| return authDecisionStatementData; |
| } |
| |
| /** |
| * Method setAuthDecisionStatementData sets the authDecisionStatementData of this |
| * SAMLCallback object. |
| * |
| * @param authDecisionStatementData the authDecisionStatementData of this |
| * SAMLCallback object. |
| */ |
| public void setAuthDecisionStatementData( |
| List<AuthDecisionStatementBean> authDecisionStatementData |
| ) { |
| this.authDecisionStatementData = authDecisionStatementData; |
| } |
| |
| /** |
| * Method getSubject returns the subject of this SAMLCallback object. |
| * |
| * @return the subject (type SubjectBean) of this SAMLCallback object. |
| */ |
| public SubjectBean getSubject() { |
| if (subject != null) { |
| return subject; |
| } |
| |
| // SAML 1.1 case |
| if (authenticationStatementData != null) { |
| for (AuthenticationStatementBean bean : authenticationStatementData) { |
| if (bean.getSubject() != null) { |
| return bean.getSubject(); |
| } |
| } |
| } |
| |
| if (attributeStatementData != null) { |
| for (AttributeStatementBean bean : attributeStatementData) { |
| if (bean.getSubject() != null) { |
| return bean.getSubject(); |
| } |
| } |
| } |
| |
| if (authDecisionStatementData != null) { |
| for (AuthDecisionStatementBean bean : authDecisionStatementData) { |
| if (bean.getSubject() != null) { |
| return bean.getSubject(); |
| } |
| } |
| } |
| |
| return null; |
| } |
| |
| /** |
| * Method setSubject sets the subject of this SAMLCallback object. |
| * |
| * @param subject the subject of this SAMLCallback object. |
| */ |
| public void setSubject(SubjectBean subject) { |
| this.subject = subject; |
| } |
| |
| /** |
| * Method getIssuer returns the issuer of this SAMLCallback object. |
| * |
| * @return the issuer of this SAMLCallback object. |
| */ |
| public String getIssuer() { |
| return issuer; |
| } |
| |
| /** |
| * Method setIssuer sets the issuer of this SAMLCallback object. |
| * |
| * @param issuer the issuer of this SAMLCallback object. |
| */ |
| public void setIssuer(String issuer) { |
| this.issuer = issuer; |
| } |
| |
| /** |
| * Method getConditions returns the conditions of this SAMLCallback object. |
| * |
| * @return the conditions (type ConditionsBean) of this SAMLCallback object. |
| */ |
| public ConditionsBean getConditions() { |
| return conditions; |
| } |
| |
| /** |
| * Method setConditions sets the conditions of this SAMLCallback object. |
| * |
| * @param conditions the conditions of this SAMLCallback object. |
| */ |
| public void setConditions(ConditionsBean conditions) { |
| this.conditions = conditions; |
| } |
| |
| /** |
| * Set the SAMLVersion of the assertion to create |
| * @param samlVersion the SAMLVersion of the assertion to create |
| */ |
| @Deprecated |
| public void setSamlVersion(SAMLVersion samlVersion) { |
| this.samlVersion = samlVersion; |
| } |
| |
| /** |
| * Get the SAMLVersion of the assertion to create |
| * @return the SAMLVersion of the assertion to create |
| */ |
| public SAMLVersion getSamlVersion() { |
| return samlVersion; |
| } |
| |
| /** |
| * Set the SAML Version of the assertion to create |
| * @param samlVersion the SAML Version of the assertion to create |
| */ |
| public void setSamlVersion(Version samlVersion) { |
| if (samlVersion == Version.SAML_20) { |
| this.samlVersion = SAMLVersion.VERSION_20; |
| } else if (samlVersion == Version.SAML_11) { |
| this.samlVersion = SAMLVersion.VERSION_11; |
| } else if (samlVersion == Version.SAML_10) { |
| this.samlVersion = SAMLVersion.VERSION_10; |
| } |
| } |
| |
| /** |
| * Set the DOM representation of this SAML Assertion |
| * @param assertionElement the DOM representation of this SAML Assertion |
| */ |
| public void setAssertionElement(Element assertionElement) { |
| this.assertionElement = assertionElement; |
| } |
| |
| /** |
| * Get the DOM representation of this SAML Assertion |
| * @return the DOM representation of this SAML Assertion |
| */ |
| public Element getAssertionElement() { |
| return assertionElement; |
| } |
| |
| public boolean isSignAssertion() { |
| return signAssertion; |
| } |
| |
| public void setSignAssertion(boolean signAssertion) { |
| this.signAssertion = signAssertion; |
| } |
| |
| public String getIssuerKeyName() { |
| return issuerKeyName; |
| } |
| |
| public void setIssuerKeyName(String issuerKeyName) { |
| this.issuerKeyName = issuerKeyName; |
| } |
| |
| public String getIssuerKeyPassword() { |
| return issuerKeyPassword; |
| } |
| |
| public void setIssuerKeyPassword(String issuerKeyPassword) { |
| this.issuerKeyPassword = issuerKeyPassword; |
| } |
| |
| public Crypto getIssuerCrypto() { |
| return issuerCrypto; |
| } |
| |
| public void setIssuerCrypto(Crypto issuerCrypto) { |
| this.issuerCrypto = issuerCrypto; |
| } |
| |
| public boolean isSendKeyValue() { |
| return sendKeyValue; |
| } |
| |
| public void setSendKeyValue(boolean sendKeyValue) { |
| this.sendKeyValue = sendKeyValue; |
| } |
| |
| public String getCanonicalizationAlgorithm() { |
| return canonicalizationAlgorithm; |
| } |
| |
| public void setCanonicalizationAlgorithm(String canonicalizationAlgorithm) { |
| this.canonicalizationAlgorithm = canonicalizationAlgorithm; |
| } |
| |
| public String getSignatureAlgorithm() { |
| return signatureAlgorithm; |
| } |
| |
| public void setSignatureAlgorithm(String signatureAlgorithm) { |
| this.signatureAlgorithm = signatureAlgorithm; |
| } |
| |
| public String getSignatureDigestAlgorithm() { |
| return signatureDigestAlgorithm; |
| } |
| |
| public void setSignatureDigestAlgorithm(String signatureDigestAlgorithm) { |
| this.signatureDigestAlgorithm = signatureDigestAlgorithm; |
| } |
| |
| public AdviceBean getAdvice() { |
| return advice; |
| } |
| |
| public void setAdvice(AdviceBean advice) { |
| this.advice = advice; |
| } |
| |
| public String getIssuerFormat() { |
| return issuerFormat; |
| } |
| |
| public void setIssuerFormat(String issuerFormat) { |
| this.issuerFormat = issuerFormat; |
| } |
| |
| public String getIssuerQualifier() { |
| return issuerQualifier; |
| } |
| |
| public void setIssuerQualifier(String issuerQualifier) { |
| this.issuerQualifier = issuerQualifier; |
| } |
| } |