com.sun.xml.wss.saml.assertion.saml11.jaxb20.SubjectConfirmation Maven / Gradle / Ivy
/*
* Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* $Id: SubjectConfirmation.java,v 1.2 2010-10-21 15:38:00 snajper Exp $
*/
package com.sun.xml.wss.saml.assertion.saml11.jaxb20;
import com.sun.xml.wss.saml.SAMLException;
import com.sun.xml.wss.logging.LogDomainConstants;
import com.sun.xml.security.core.dsig.KeyInfoType;
import com.sun.xml.wss.saml.NameID;
import com.sun.xml.wss.saml.SubjectConfirmationData;
import com.sun.xml.wss.saml.internal.saml11.jaxb20.SubjectConfirmationType;
import com.sun.xml.wss.saml.util.SAMLJAXBUtil;
import java.util.LinkedList;
import java.util.List;
import jakarta.xml.bind.JAXBElement;
import org.w3c.dom.Element;
import java.util.logging.Logger;
import java.security.PublicKey;
import jakarta.xml.bind.JAXBContext;
/**
* The SubjectConfirmation
element specifies a subject by specifying data that
* authenticates the subject.
*/
public class SubjectConfirmation extends com.sun.xml.wss.saml.internal.saml11.jaxb20.SubjectConfirmationType
implements com.sun.xml.wss.saml.SubjectConfirmation {
protected PublicKey keyInfoKeyValue = null;
protected static final Logger log = Logger.getLogger(
LogDomainConstants.WSS_API_DOMAIN,
LogDomainConstants.WSS_API_DOMAIN_BUNDLE);
public SubjectConfirmation(){
}
@SuppressWarnings("unchecked")
public void setConfirmationMethod(List confirmationMethod) {
this.confirmationMethod = confirmationMethod;
}
/**
* From scratch constructor for a single confirmation method.
*
* @param confirmationMethod A URI (String) that identifies a protocol used
* to authenticate a Subject
. Please refer to
* draft-sstc-core-25
Section 7 for a list of URIs
* identifying common authentication protocols.
*/
@SuppressWarnings("unchecked")
public SubjectConfirmation(java.lang.String confirmationMethod) {
List cm = new LinkedList();
cm.add(confirmationMethod);
setConfirmationMethod(cm);
}
/**
* Constructs a subject confirmation element from an existing
* XML block.
*
* @param element a DOM Element representing the
* SubjectConfirmation
object.
*/
public static SubjectConfirmationType fromElement(org.w3c.dom.Element element)
throws SAMLException {
try {
JAXBContext jc = SAMLJAXBUtil.getJAXBContext();
jakarta.xml.bind.Unmarshaller u = jc.createUnmarshaller();
return (SubjectConfirmationType)u.unmarshal(element);
} catch ( Exception ex) {
throw new SAMLException(ex.getMessage());
}
}
/**
* Constructs an SubjectConfirmation
instance.
*
* @param confirmationMethods A set of confirmationMethods
* each of which is a URI (String) that identifies a protocol
* used to authenticate a Subject
. Please refer to
* draft-sstc-core-25
Section 7 for
* a list of URIs identifying common authentication protocols.
* @param subjectConfirmationData Additional authentication information to
* be used by a specific authentication protocol. Can be passed as
* null if there is no subjectConfirmationData
for the
* SubjectConfirmation
object.
* @param keyInfo An XML signature element that specifies a cryptographic
* key held by the Subject
.
* @exception SAMLException if the input data is invalid or
* confirmationMethods
is empty.
*/
public SubjectConfirmation(
List confirmationMethods, Element subjectConfirmationData,
Element keyInfo) throws SAMLException {
JAXBContext jc = null;
jakarta.xml.bind.Unmarshaller u = null;
//Unmarshal to JAXB KeyInfo Object and set it
try {
jc = SAMLJAXBUtil.getJAXBContext();
u = jc.createUnmarshaller();
} catch ( Exception ex) {
throw new SAMLException(ex.getMessage());
}
try {
if ( keyInfo != null) {
setKeyInfo((KeyInfoType)((JAXBElement)u.unmarshal(keyInfo)).getValue());
}
if ( subjectConfirmationData != null) {
setSubjectConfirmationData(((JAXBElement)u.unmarshal(subjectConfirmationData)).getValue());
}
} catch (Exception ex) {
// log here
throw new SAMLException(ex);
}
setConfirmationMethod(confirmationMethods);
}
public SubjectConfirmation(SubjectConfirmationType subConfType){
setSubjectConfirmationData(subConfType.getSubjectConfirmationData());
setConfirmationMethod(subConfType.getConfirmationMethod());
}
@Override
public Object getSubjectConfirmationDataForSAML11() {
return super.getSubjectConfirmationData();
}
@Override
public SubjectConfirmationData getSubjectConfirmationDataForSAML20() {
throw new UnsupportedOperationException("Not supported for SAML 1.1");
}
@Override
public NameID getNameId() {
throw new UnsupportedOperationException("Not supported for SAML 1.1");
}
}