Remove SpringSecurityAuthnRequestBuilder

- We don't want to have public top-level classes extending or
implementing OpenSAML classes

Issue gh-9095
This commit is contained in:
Josh Cummings 2021-03-30 11:40:38 -06:00
parent 404e9e153a
commit 4b351b1472
No known key found for this signature in database
GPG Key ID: 49EF60DD7FF83443

View File

@ -1,80 +0,0 @@
/*
* Copyright 2002-2020 the original author or authors.
*
* 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
*
* https://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.springframework.security.saml2.core;
import java.time.Clock;
import java.time.Instant;
import java.util.UUID;
import org.joda.time.DateTime;
import org.opensaml.core.xml.XMLObjectBuilder;
import org.opensaml.saml.common.xml.SAMLConstants;
import org.opensaml.saml.saml2.core.AuthnRequest;
import org.opensaml.saml.saml2.core.impl.AuthnRequestBuilder;
/**
* A {@link AuthnRequestBuilder} that gives each {@link AuthnRequest} some reasonable
* defaults.
*
* @author Josh Cummings
* @since 5.5
*/
public final class SpringSecurityAuthnRequestBuilder extends AuthnRequestBuilder {
private final XMLObjectBuilder<AuthnRequest> builder;
private Clock clock = Clock.systemUTC();
SpringSecurityAuthnRequestBuilder(XMLObjectBuilder<AuthnRequest> builder) {
this.builder = builder;
}
/** {@inheritDoc} */
@Override
public AuthnRequest buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
AuthnRequest authnRequest = this.builder.buildObject(namespaceURI, localName, namespacePrefix);
setDefaults(authnRequest);
return authnRequest;
}
/**
* Use this {@link Clock} with {@link Instant#now()} for generating timestamps
* @param clock
*/
public void setClock(Clock clock) {
this.clock = clock;
}
private void setDefaults(AuthnRequest authnRequest) {
if (authnRequest.getID() == null) {
authnRequest.setID("ARQ" + UUID.randomUUID().toString().substring(1));
}
if (authnRequest.getIssueInstant() == null) {
authnRequest.setIssueInstant(new DateTime(this.clock.millis()));
}
if (authnRequest.isForceAuthn() == null) {
authnRequest.setForceAuthn(Boolean.FALSE);
}
if (authnRequest.isPassive() == null) {
authnRequest.setIsPassive(Boolean.FALSE);
}
if (authnRequest.getProtocolBinding() == null) {
authnRequest.setProtocolBinding(SAMLConstants.SAML2_POST_BINDING_URI);
}
}
}