/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* Licensed 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.keycloak.dom.saml.v2.assertion;
import java.io.Serializable;
import java.net.URI;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* <p>
* Java class for AuthnContextType complex type.
*
* <p>
* The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="AuthnContextType">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <choice>
* <sequence>
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthnContextClassRef"/>
* <choice minOccurs="0">
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthnContextDecl"/>
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthnContextDeclRef"/>
* </choice>
* </sequence>
* <choice>
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthnContextDecl"/>
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthnContextDeclRef"/>
* </choice>
* </choice>
* <element ref="{urn:oasis:names:tc:SAML:2.0:assertion}AuthenticatingAuthority" maxOccurs="unbounded"
* minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*/
public class AuthnContextType implements Serializable {
private final Set<URI> authenticatingAuthority = new LinkedHashSet<URI>();
private AuthnContextTypeSequence sequence;
private final Set<URIType> URITypes = new HashSet<URIType>();
/**
* Add an authenticating authority
*
* @param aa {@link URI}
*/
public void addAuthenticatingAuthority(URI aa) {
authenticatingAuthority.add(aa);
}
/**
* Add Authenticating Authority
*
* @param aas an array of {@link URI}
*/
public void addAuthenticatingAuthority(URI[] aas) {
authenticatingAuthority.addAll(Arrays.asList(aas));
}
/**
* Remove an authenticating authority
*
* @param aa
*/
public void removeAuthenticatingAuthority(URI aa) {
authenticatingAuthority.remove(aa);
}
/**
* Get a read only set of authenticating authority
*
* @return
*/
public Set<URI> getAuthenticatingAuthority() {
return Collections.unmodifiableSet(authenticatingAuthority);
}
/**
* Get the sequence
*
* @return
*/
public AuthnContextTypeSequence getSequence() {
return sequence;
}
/**
* Set the authn context sequence
*
* @param sequence
*/
public void setSequence(AuthnContextTypeSequence sequence) {
this.sequence = sequence;
}
/**
* Add an URI type
*
* @param aa
*/
public void addURIType(URIType aa) {
URITypes.add(aa);
}
/**
* Add an array of URI Type
*
* @param aas
*/
public void addURIType(URIType[] aas) {
URITypes.addAll(Arrays.asList(aas));
}
/**
* Get a read only set of URI type
*
* @return
*/
public Set<URIType> getURIType() {
return Collections.unmodifiableSet(URITypes);
}
/**
* Add an URI type
*
* @param aa
*/
public void removeURIType(URIType aa) {
URITypes.remove(aa);
}
/**
* <sequence> <element ref="saml:AuthnContextClassRef"/> <choice minOccurs="0"> <element
* ref="saml:AuthnContextDecl"/>
* <element ref="saml:AuthnContextDeclRef"/> </choice> </sequence>
*/
public class AuthnContextTypeSequence implements Serializable {
private AuthnContextClassRefType classRef;
private AuthnContextDeclType authnContextDecl;
private final Set<URIType> URITypes = new HashSet<URIType>();
public AuthnContextClassRefType getClassRef() {
return classRef;
}
public void setClassRef(AuthnContextClassRefType classRef) {
this.classRef = classRef;
}
public void addURIType(URIType aa) {
URITypes.add(aa);
}
public void removeURIType(URIType aa) {
URITypes.remove(aa);
}
public void addURIType(URIType[] aas) {
URITypes.addAll(Arrays.asList(aas));
}
public Set<URIType> getURIType() {
return Collections.unmodifiableSet(URITypes);
}
public AuthnContextDeclType getAuthnContextDecl() {
return authnContextDecl;
}
public void setAuthnContextDecl(AuthnContextDeclType authnContextDecl) {
this.authnContextDecl = authnContextDecl;
}
}
}