Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New saml 20240430 - Not to merge but just for SAML feature branch testing #2862

Closed
wants to merge 63 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
f6cb32b
remove: SAML extension library dependency
swalchemist Jan 24, 2024
34aaf6d
Ignore non-functioning SAML tests
swalchemist Feb 13, 2024
c52538f
update @Ignore - test now compiles
swalchemist Feb 23, 2024
d1b9bb5
feat: switch to new Spring Security SAML library
swalchemist Feb 27, 2024
25b7b09
feat: Supply metadata through /saml/metadata
Tallicia Mar 13, 2024
86fe182
fix: handle case when Servlet Path is null and ensures test WithHttp…
Tallicia Mar 13, 2024
a48a156
remove: SAML extension library dependency
swalchemist Jan 24, 2024
2259944
Ignore non-functioning SAML tests
swalchemist Feb 13, 2024
cbabd66
feat: Supply metadata through /saml/metadata
Tallicia Mar 13, 2024
e24a245
fix: handle case when Servlet Path is null and ensures test WithHttp…
Tallicia Mar 13, 2024
a0982b2
feat: reliably serve SAML SP metadata
peterhaochen47 Mar 20, 2024
8507ac4
Ignore failing SAML test
peterhaochen47 Mar 20, 2024
12c67c4
disable docs test that shouldn't be running
swalchemist Mar 25, 2024
d4f8445
Ignore failing SAML test
swalchemist Mar 26, 2024
620e37e
refactor: shorten the dummy IDP metadata
swalchemist Mar 26, 2024
467c0e8
fix: "invalid XML" error in tests
peterhaochen47 Mar 26, 2024
5d995b3
wip: configure some metadata params
peterhaochen47 Mar 26, 2024
45a0914
disable failing test
swalchemist Apr 1, 2024
0d8a3bb
WIP
bruce-ricard Apr 2, 2024
dc862ac
wip
bruce-ricard Apr 4, 2024
1811cbf
wip: ensuring the endpoint for metadata works both in forward and dir…
Tallicia Apr 9, 2024
2008a19
add metadata redirect test
bruce-ricard Apr 11, 2024
503b314
wip: ensuring the saml metadata endpoint for metadata works in Mock M…
Tallicia Apr 16, 2024
6b3aec5
wip: entityID assertion works in testSamlMetadataDefault
swalchemist Apr 16, 2024
08643c1
feat: entity_id assertion passes
swalchemist Apr 16, 2024
b9455eb
wip: use working metadata path temporarily
swalchemist Apr 16, 2024
cb5efd6
wip: xml refactor
swalchemist Apr 16, 2024
844dc4a
wip: updating to non forwarding for /saml/metadata to the example def…
Tallicia Apr 16, 2024
3b64e17
wip: Ensuring the WantsAssertionSigned and AuthnRequestsSigned are po…
Tallicia Apr 18, 2024
2b4560d
wip: Adding in signature elements for SAML metadata.xml endpoint payload
Tallicia Apr 18, 2024
63dcf48
wip: Adding in signature elements for SAML metadata.xml endpoint payload
Tallicia Apr 19, 2024
6082976
feat: populate SAMP SP metadata fields: entityID, NameIDFormat, Authn…
duanemay Apr 22, 2024
db9a3b9
refactor: clean up commented out code
peterhaochen47 Apr 22, 2024
312672c
Ignore non-functioning SAML tests
peterhaochen47 Apr 22, 2024
c82ecd6
Update opensaml libraries to 4.x
duanemay Apr 23, 2024
ea3dbe4
Refactor annotations and formatting
duanemay Apr 23, 2024
b5bb412
Refactor tests: formatting, andExpectAll and assertThat
duanemay Apr 23, 2024
f5d9ed7
Change from SAML XML to Java Config
duanemay Apr 23, 2024
3d5ee83
feat: populate sp metadata field WantAssertionsSigned
duanemay Apr 23, 2024
790a7b4
feat: saml sp metadata field - signing cert
peterhaochen47 Apr 24, 2024
fbe3d97
feat: saml sp metadata encryption cert
peterhaochen47 Apr 24, 2024
8447208
refactor: consolidate saml sp configs
peterhaochen47 Apr 24, 2024
0096f5c
refactor: use lombok
peterhaochen47 Apr 24, 2024
a78924d
refactor: simplify lombok annotation
peterhaochen47 Apr 24, 2024
a04da25
fix: maintain existing saml sp metadata file name
peterhaochen47 Apr 24, 2024
30bf3ee
fix: saml sp metadata test set up
peterhaochen47 Apr 25, 2024
161277c
fix: SAML SP metadata endpoint and its https redirect
hsinn0 Apr 30, 2024
ecd087b
Clean up unnecssary codes
hsinn0 Apr 30, 2024
9a1b5b9
Load the Saml Provider Data
hsinn0 May 1, 2024
8da1ddd
refactor: Spring Annotations on SamlRelyingPartyRegistrationRepository
duanemay May 7, 2024
94fe0eb
fix: multiple versions of the opensaml library
duanemay May 8, 2024
6249e49
feat: send SAML authn request to IDP
peterhaochen47 May 10, 2024
4eb307a
fix: always rotate refresh tokens for public clients (#2846)
mikeroda May 13, 2024
99d2ee3
build(deps): bump nokogiri from 1.16.4 to 1.16.5 in /uaa/slate (#2886)
dependabot[bot] May 14, 2024
a9ec381
build(deps): bump k8s.io/client-go from 0.30.0 to 0.30.1 in /k8s (#2893)
dependabot[bot] May 15, 2024
26ca6e0
build(deps): bump com.nimbusds:nimbus-jose-jwt from 9.39 to 9.39.1 (#…
dependabot[bot] May 15, 2024
5fc9fbc
fix: /info docs test expectation (#2884)
peterhaochen47 May 15, 2024
cd19921
update saml link on login page
duanemay May 13, 2024
aff962e
fix: issue with 2 JsonObjects imported
duanemay May 14, 2024
8c3361e
Merge SamlConfigProps to single class
duanemay May 14, 2024
2a7e540
Update SamlLoginIT
duanemay May 14, 2024
c000546
feat: Saml Login redirects to IDP
duanemay May 14, 2024
a12e3cd
fix: click first saml link matching text
duanemay May 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 10 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ subprojects {
exclude(group: "org.apache.directory.server", module: "apacheds-protocol-ldap")
exclude(group: "org.skyscreamer", module: "jsonassert")
exclude(group: "com.vaadin.external.google", module: "android-json")
exclude(group: "com.unboundid.components", module: "json")

resolutionStrategy {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.opensaml' && details.requested.name.startsWith("opensaml-")) {
details.useVersion "${versions.opensaml}"
details.because 'Spring Security 5.8.x allows OpenSAML 3 or 4. OpenSAML 3 has reached its end-of-life. Spring Security 6 drops support for 3, using 4.'
}
}
}
}

dependencies {
Expand Down
5 changes: 3 additions & 2 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ versions.seleniumVersion = "4.18.1"
versions.braveVersion = "6.0.3"
versions.jacksonVersion = "2.17.1"
versions.jsonPathVersion = "2.9.0"
versions.opensaml = "4.0.1" // Spring Security 5.8.x allows OpenSAML 3 or 4. OpenSAML 3 has reached its end-of-life. Spring Security 6 drops support for 3, using 4.

// Versions we're overriding from the Spring Boot Bom (Dependabot does not issue PRs to bump these versions, so we need to manually bump them)
ext["mariadb.version"] = "2.7.12" // Bumping to v3 breaks some pipeline jobs (and compatibility with Amazon Aurora MySQL), so pinning to v2 for now. v2 (current version) is stable and will be supported until about September 2025 (https://mariadb.com/kb/en/about-mariadb-connector-j/).
Expand Down Expand Up @@ -103,7 +104,7 @@ libraries.springRetry = "org.springframework.retry:spring-retry"
libraries.springSecurityConfig = "org.springframework.security:spring-security-config:${versions.springSecurityVersion}"
libraries.springSecurityCore = "org.springframework.security:spring-security-core:${versions.springSecurityVersion}"
libraries.springSecurityLdap = "org.springframework.security:spring-security-ldap:${versions.springSecurityVersion}"
libraries.springSecuritySaml = "org.springframework.security.extensions:spring-security-saml2-core:${versions.springSecuritySamlVersion}"
libraries.springSecuritySamlServiceProvider = "org.springframework.security:spring-security-saml2-service-provider:${versions.springSecurityVersion}"
libraries.springSecurityTaglibs = "org.springframework.security:spring-security-taglibs:${versions.springSecurityVersion}"
libraries.springSecurityTest = "org.springframework.security:spring-security-test:${versions.springSecurityVersion}"
libraries.springSecurityWeb = "org.springframework.security:spring-security-web:${versions.springSecurityVersion}"
Expand All @@ -125,7 +126,7 @@ libraries.unboundIdLdapSdk = "com.unboundid:unboundid-ldapsdk"
libraries.unboundIdScimSdk = "com.unboundid.product.scim:scim-sdk:1.8.26"
libraries.velocity = "org.apache.velocity:velocity-engine-core:2.3"
libraries.xerces = "xerces:xercesImpl:2.12.2"
libraries.nimbusJwt = "com.nimbusds:nimbus-jose-jwt:9.39"
libraries.nimbusJwt = "com.nimbusds:nimbus-jose-jwt:9.39.1"
libraries.xmlSecurity = "org.apache.santuario:xmlsec:4.0.2"
libraries.orgJson = "org.json:json:20240303"
libraries.owaspEsapi = "org.owasp.esapi:esapi:2.5.3.1"
Expand Down
6 changes: 3 additions & 3 deletions k8s/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ require (
github.com/onsi/ginkgo v1.16.5
github.com/onsi/gomega v1.33.1
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.30.0
k8s.io/apimachinery v0.30.0
k8s.io/client-go v0.30.0
k8s.io/api v0.30.1
k8s.io/apimachinery v0.30.1
k8s.io/client-go v0.30.1
)

require (
Expand Down
12 changes: 6 additions & 6 deletions k8s/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,12 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.30.0 h1:siWhRq7cNjy2iHssOB9SCGNCl2spiF1dO3dABqZ8niA=
k8s.io/api v0.30.0/go.mod h1:OPlaYhoHs8EQ1ql0R/TsUgaRPhpKNxIMrKQfWUp8QSE=
k8s.io/apimachinery v0.30.0 h1:qxVPsyDM5XS96NIh9Oj6LavoVFYff/Pon9cZeDIkHHA=
k8s.io/apimachinery v0.30.0/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
k8s.io/client-go v0.30.0 h1:sB1AGGlhY/o7KCyCEQ0bPWzYDL0pwOZO4vAtTSh/gJQ=
k8s.io/client-go v0.30.0/go.mod h1:g7li5O5256qe6TYdAMyX/otJqMhIiGgTapdLchhmOaY=
k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY=
k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM=
k8s.io/apimachinery v0.30.1 h1:ZQStsEfo4n65yAdlGTfP/uSHMQSoYzU/oeEbkmF7P2U=
k8s.io/apimachinery v0.30.1/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q=
k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc=
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.cloudfoundry.identity.uaa.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.xml.sax.InputSource;
Expand All @@ -25,25 +26,12 @@
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;

@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class SamlIdentityProviderDefinition extends ExternalIdentityProviderDefinition {

public enum MetadataLocation {
URL,
DATA,
UNKNOWN
}

public enum ExternalGroupMappingMode {
EXPLICITLY_MAPPED,
AS_SCOPES
}

private String metaDataLocation;
private String idpEntityAlias;
private String zoneId;
Expand All @@ -57,7 +45,8 @@ public enum ExternalGroupMappingMode {
private boolean skipSslValidation = false;
private List<String> authnContext;

public SamlIdentityProviderDefinition() {}
public SamlIdentityProviderDefinition() {
}

public SamlIdentityProviderDefinition clone() {
List<String> emailDomain = getEmailDomain() != null ? new ArrayList<>(getEmailDomain()) : null;
Expand Down Expand Up @@ -92,9 +81,9 @@ public SamlIdentityProviderDefinition clone() {
public MetadataLocation getType() {
String trimmedLocation = metaDataLocation.trim();
if (trimmedLocation.startsWith("<?xml") ||
trimmedLocation.startsWith("<md:EntityDescriptor") ||
trimmedLocation.startsWith("<EntityDescriptor")) {
if(validateXml(trimmedLocation)) {
trimmedLocation.startsWith("<md:EntityDescriptor") ||
trimmedLocation.startsWith("<EntityDescriptor")) {
if (validateXml(trimmedLocation)) {
return MetadataLocation.DATA;
}
} else if (trimmedLocation.startsWith("http")) {
Expand All @@ -109,7 +98,7 @@ public MetadataLocation getType() {
}

private boolean validateXml(String xml) {
if (xml==null || xml.toUpperCase().contains("<!DOCTYPE")) {
if (xml == null || xml.toUpperCase().contains("<!DOCTYPE")) {
return false;
}
try {
Expand All @@ -122,77 +111,41 @@ private boolean validateXml(String xml) {
return true;
}

public String getMetaDataLocation() {
return metaDataLocation;
}

public SamlIdentityProviderDefinition setMetaDataLocation(String metaDataLocation) {
this.metaDataLocation = metaDataLocation;
return this;
}

public String getIdpEntityAlias() {
return idpEntityAlias;
}

public SamlIdentityProviderDefinition setIdpEntityAlias(String idpEntityAlias) {
this.idpEntityAlias = idpEntityAlias;
return this;
}

public String getNameID() {
return nameID;
}

public SamlIdentityProviderDefinition setNameID(String nameID) {
this.nameID = nameID;
return this;
}

public List<String> getAuthnContext() {
return authnContext;
}

public SamlIdentityProviderDefinition setAuthnContext(List<String> authnContext) {
this.authnContext = authnContext;
return this;
}

public int getAssertionConsumerIndex() {
return assertionConsumerIndex;
}

public SamlIdentityProviderDefinition setAssertionConsumerIndex(int assertionConsumerIndex) {
this.assertionConsumerIndex = assertionConsumerIndex;
return this;
}

public boolean isMetadataTrustCheck() {
return metadataTrustCheck;
}

public SamlIdentityProviderDefinition setMetadataTrustCheck(boolean metadataTrustCheck) {
this.metadataTrustCheck = metadataTrustCheck;
return this;
}

public boolean isShowSamlLink() {
return showSamlLink;
}

public SamlIdentityProviderDefinition setShowSamlLink(boolean showSamlLink) {
this.showSamlLink = showSamlLink;
return this;
}

public ExternalGroupMappingMode getGroupMappingMode() {
return groupMappingMode;
}

public void setGroupMappingMode(ExternalGroupMappingMode asScopes) {
this.groupMappingMode = asScopes;
}

public String getSocketFactoryClassName() {
return null;
}
Expand All @@ -211,32 +164,16 @@ public SamlIdentityProviderDefinition setLinkText(String linkText) {
return this;
}

public String getIconUrl() {
return iconUrl;
}

public SamlIdentityProviderDefinition setIconUrl(String iconUrl) {
this.iconUrl = iconUrl;
return this;
}

public String getZoneId() {
return zoneId;
}

public SamlIdentityProviderDefinition setZoneId(String zoneId) {
this.zoneId = zoneId;
return this;
}

public boolean isSkipSslValidation() {
return skipSslValidation;
}

public void setSkipSslValidation(boolean skipSslValidation) {
this.skipSslValidation = skipSslValidation;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand All @@ -251,30 +188,41 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
String alias = getUniqueAlias();
return alias==null ? 0 : alias.hashCode();
return alias == null ? 0 : alias.hashCode();
}

@JsonIgnore
public String getUniqueAlias() {
return getIdpEntityAlias()+"###"+getZoneId();
return getIdpEntityAlias() + "###" + getZoneId();
}

@Override
public String toString() {
return "SamlIdentityProviderDefinition{" +
"idpEntityAlias='" + idpEntityAlias + '\'' +
", metaDataLocation='" + metaDataLocation + '\'' +
", nameID='" + nameID + '\'' +
", assertionConsumerIndex=" + assertionConsumerIndex +
", metadataTrustCheck=" + metadataTrustCheck +
", showSamlLink=" + showSamlLink +
", socketFactoryClassName='deprected-not used'" +
", skipSslValidation=" + skipSslValidation +
", linkText='" + linkText + '\'' +
", iconUrl='" + iconUrl + '\'' +
", zoneId='" + zoneId + '\'' +
", addShadowUserOnLogin='" + isAddShadowUserOnLogin() + '\'' +
'}';
"idpEntityAlias='" + idpEntityAlias + '\'' +
", metaDataLocation='" + metaDataLocation + '\'' +
", nameID='" + nameID + '\'' +
", assertionConsumerIndex=" + assertionConsumerIndex +
", metadataTrustCheck=" + metadataTrustCheck +
", showSamlLink=" + showSamlLink +
", socketFactoryClassName='deprected-not used'" +
", skipSslValidation=" + skipSslValidation +
", linkText='" + linkText + '\'' +
", iconUrl='" + iconUrl + '\'' +
", zoneId='" + zoneId + '\'' +
", addShadowUserOnLogin='" + isAddShadowUserOnLogin() + '\'' +
'}';
}

public enum MetadataLocation {
URL,
DATA,
UNKNOWN
}

public enum ExternalGroupMappingMode {
EXPLICITLY_MAPPED,
AS_SCOPES
}

}
}
5 changes: 1 addition & 4 deletions server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ dependencies {
implementation(libraries.owaspEsapi) {
transitive = false
}
implementation(libraries.springSecuritySaml) {
exclude(module: "bcprov-ext-jdk15on")
exclude(module: "xalan")
}
implementation(libraries.springSecuritySamlServiceProvider)
implementation(libraries.jodaTime)
implementation(libraries.xmlSecurity)
implementation(libraries.springSessionJdbc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContextHolder;
import org.cloudfoundry.identity.uaa.oauth.common.exceptions.OAuth2Exception;
import org.springframework.security.saml.SAMLProcessingFilter;
//import org.springframework.security.saml.SAMLProcessingFilter;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;

Expand Down Expand Up @@ -75,25 +75,25 @@ public class BackwardsCompatibleTokenEndpointAuthenticationFilter implements Fil

private final OAuth2RequestFactory oAuth2RequestFactory;

private final SAMLProcessingFilter samlAuthenticationFilter;
// private final SAMLProcessingFilter samlAuthenticationFilter;

private final ExternalOAuthAuthenticationManager externalOAuthAuthenticationManager;

public BackwardsCompatibleTokenEndpointAuthenticationFilter(AuthenticationManager authenticationManager,
OAuth2RequestFactory oAuth2RequestFactory) {
this(authenticationManager, oAuth2RequestFactory, null, null);
this(authenticationManager, oAuth2RequestFactory, null);
}
/**
* @param authenticationManager an AuthenticationManager for the incoming request
*/
public BackwardsCompatibleTokenEndpointAuthenticationFilter(AuthenticationManager authenticationManager,
OAuth2RequestFactory oAuth2RequestFactory,
SAMLProcessingFilter samlAuthenticationFilter,
// SAMLProcessingFilter samlAuthenticationFilter,
ExternalOAuthAuthenticationManager externalOAuthAuthenticationManager) {
super();
this.authenticationManager = authenticationManager;
this.oAuth2RequestFactory = oAuth2RequestFactory;
this.samlAuthenticationFilter = samlAuthenticationFilter;
// this.samlAuthenticationFilter = samlAuthenticationFilter;
this.externalOAuthAuthenticationManager = externalOAuthAuthenticationManager;
}

Expand Down Expand Up @@ -226,15 +226,15 @@ protected Authentication attemptTokenAuthentication(HttpServletRequest request,

return authResult;
} else if (GRANT_TYPE_SAML2_BEARER.equals(grantType)) {
logger.debug(GRANT_TYPE_SAML2_BEARER +" found. Attempting authentication with assertion");
String assertion = request.getParameter("assertion");
if (assertion != null && samlAuthenticationFilter != null) {
logger.debug("Attempting SAML authentication for token endpoint.");
authResult = samlAuthenticationFilter.attemptAuthentication(request, response);
} else {
logger.debug("No assertion or filter, not attempting SAML authentication for token endpoint.");
throw new InsufficientAuthenticationException("SAML Assertion is missing");
}
// logger.debug(GRANT_TYPE_SAML2_BEARER +" found. Attempting authentication with assertion");
// String assertion = request.getParameter("assertion");
// if (assertion != null && samlAuthenticationFilter != null) {
// logger.debug("Attempting SAML authentication for token endpoint.");
// authResult = samlAuthenticationFilter.attemptAuthentication(request, response);
// } else {
// logger.debug("No assertion or filter, not attempting SAML authentication for token endpoint.");
// throw new InsufficientAuthenticationException("SAML Assertion is missing");
// }
} else if (GRANT_TYPE_JWT_BEARER.equals(grantType)) {
logger.debug(GRANT_TYPE_JWT_BEARER +" found. Attempting authentication with assertion");
String assertion = request.getParameter("assertion");
Expand Down