[java-idp-plugin-oidc-rp] branch main updated: JOIDCRP-41 - Upgrade for IdP V5 compatibility

Phil Smart philip.smart at jisc.ac.uk
Fri Jul 21 10:53:53 UTC 2023


This is an automated email from the git hooks/post-receive script.

philsmart pushed a commit to branch main
in repository java-idp-plugin-oidc-rp.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-oidc-rp.git;a=commit;h=558e98c109a6f582204fceb1f45aef082986ffc3

The following commit(s) were added to refs/heads/main by this push:
     new 558e98c  JOIDCRP-41 - Upgrade for IdP V5 compatibility
558e98c is described below

commit 558e98c109a6f582204fceb1f45aef082986ffc3
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Fri Jul 21 11:53:35 2023 +0100

    JOIDCRP-41 - Upgrade for IdP V5 compatibility
    
     - Update for Java17 e.g. instanceof and stream operations
    
    https://shibboleth.atlassian.net/browse/JOIDCRP-41
---
 .../navigate/ExtraAudiencesLookupStrategy.java     |  4 ++--
 .../rp/config/navigate/MaxAgeLookupFunction.java   |  8 ++++----
 ...viderMetadataStringListValueLookupFunction.java |  7 +++----
 .../config/navigate/RedirectUriLookupFunction.java |  5 ++---
 .../UserInfoHttpRequestMethodLookupStrategy.java   |  4 ++--
 .../AuthenticationRequestTimeLookupFunction.java   |  4 ++--
 .../navigate/IDTokenJOSEHeaderLookupStrategy.java  |  4 ++--
 .../navigate/RequestObjectTokenUpdateStrategy.java |  4 ++--
 ...earerTokenForClientAuthenticationPredicate.java |  5 ++---
 .../logic/RequestObjectRequiredAndSupported.java   |  5 ++---
 .../RequiresSignatureVerificationPredicate.java    |  5 ++---
 .../context/logic/UserInfoLookupCondition.java     |  8 +++-----
 ...WTClaimsSetFromRequestObjectLookupFunction.java |  4 ++--
 .../PayloadFromRequestObjectLookupFunction.java    |  8 ++++----
 ...tObjectSupportedSignatureSigningAlgorithms.java |  3 +--
 .../rp/principal/OAuth2AccessTokenPrincipal.java   |  4 ++--
 .../rp/principal/OAuth2RefreshTokenPrincipal.java  |  4 ++--
 .../principal/OIDCSubjectIdentifierPrincipal.java  |  4 ++--
 .../ProxyAuthenticationFlowAuditExtractor.java     |  3 +--
 .../oidc/rp/impl/AuthorizationController.java      |  4 ++--
 .../authn/oidc/rp/impl/BuildRequestObject.java     |  4 +---
 .../oidc/rp/impl/ExchangeCodeForAccessToken.java   |  6 +++---
 ...izeOAuth2ClientAuthenticationMethodHandler.java | 10 +++++-----
 .../rp/impl/InitializeOAuth2ClientContext.java     |  4 ++--
 .../impl/ValidateAuthenticationResponseResult.java |  4 ++--
 .../oidc/rp/impl/ValidateOIDCAuthentication.java   | 19 +++++--------------
 ...CAuthenticationRequestActionMessageHandler.java |  4 ++--
 ...actOIDCAuthenticationRequestMessageHandler.java |  4 ++--
 ...uthenticationContextClassReferencesHandler.java |  3 +--
 .../impl/AddPassiveAuthenticationHandler.java      |  4 ++--
 ...henticationRequestNonceClaimLookupStrategy.java |  4 ++--
 ...tAuthenticationConfigurationLookupFunction.java |  3 +--
 .../impl/NonceValidationActivationCondition.java   |  4 ++--
 .../oidc/rp/impl/OIDCRPFlowPreRedirectTest.java    |  1 +
 .../plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java  |  4 ++--
 .../flow-test/flows/authn/authn-events-flow.xml    | 22 ++++++++++++++++++++++
 36 files changed, 99 insertions(+), 98 deletions(-)

diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
index 0bff712..eafeacc 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
@@ -60,8 +60,8 @@ public class ExtraAudiencesLookupStrategy implements BiFunction<ProfileRequestCo
         final RelyingPartyContext rpc = relyingPartyContextLookupStrategy.apply(prc);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof OIDCIDTokenProducingProfileConfiguration) {
-                return ((OIDCIDTokenProducingProfileConfiguration)pc).getAdditionalAudiencesForIdToken(prc);
+            if (pc instanceof OIDCIDTokenProducingProfileConfiguration config) {
+                return config.getAdditionalAudiencesForIdToken(prc);
             }
         }
         return Collections.emptySet();
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
index e03d00b..2cf54f5 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
@@ -59,8 +59,8 @@ public class MaxAgeLookupFunction extends AbstractRelyingPartyLookupFunction<Dur
         
         authenticationRequestLookupStrategy = prc -> {
             if (prc.getOutboundMessageContext() != null && prc.getOutboundMessageContext().getMessage() != null &&
-                    prc.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)prc.getOutboundMessageContext().getMessage();
+                    prc.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };
@@ -94,8 +94,8 @@ public class MaxAgeLookupFunction extends AbstractRelyingPartyLookupFunction<Dur
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof OIDCAuthenticationProfileConfiguration){
-                   final Duration maxAge = ((OIDCAuthenticationProfileConfiguration)pc).getMaxAuthenticationAge(input);
+            if (pc instanceof OIDCAuthenticationProfileConfiguration config){
+                   final Duration maxAge = config.getMaxAuthenticationAge(input);
                    if (maxAge == null) {
                        return maxAgeDefault;
                    } else {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
index 7d2afe0..85d12a2 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -70,8 +69,8 @@ public class ProviderMetadataStringListValueLookupFunction implements Function<O
             log.trace("No value found for the key {}", keyName);
             return null;
         }
-        if (value instanceof String) {
-            return List.of((String)value);
+        if (value instanceof String strValue) {
+            return List.of(strValue);
         }
         if (value instanceof List) {
             final List<?> valueAsList = (List<?>)value;
@@ -80,7 +79,7 @@ public class ProviderMetadataStringListValueLookupFunction implements Function<O
                     .filter(String.class::isInstance)
                     .map(String.class::cast)
                     .filter(Predicate.not(String::isEmpty))
-                    .collect(Collectors.toList()));
+                    .toList());
         }
         
         return null;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
index 74bf760..3116728 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
@@ -39,10 +39,9 @@ public class RedirectUriLookupFunction extends AbstractRelyingPartyLookupFunctio
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
+            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration config) {
                 try {
-                    final String uriString = ((OIDCAuthenticationRelyingPartyProfileConfiguration) pc)
-                            .getRedirectUriOverride(input);
+                    final String uriString = config.getRedirectUriOverride(input);
                     return uriString != null ? new URI(uriString): null;
                 } catch (final URISyntaxException e) {
                     return null;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
index 0cedd0b..1c7f957 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
@@ -38,8 +38,8 @@ public class UserInfoHttpRequestMethodLookupStrategy extends AbstractRelyingPart
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration){
-                   return ((OIDCAuthenticationRelyingPartyProfileConfiguration)pc).getUserInfoHttpRequestMethod(input);
+            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig){
+                   return rpConfig.getUserInfoHttpRequestMethod(input);
             }
         }
         return HttpRequestMethod.GET;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
index 65bf593..c6fa0f5 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
@@ -49,8 +49,8 @@ public class AuthenticationRequestTimeLookupFunction implements Function<Profile
     public AuthenticationRequestTimeLookupFunction() {
         authenticationRequestLookupStrategy = prc -> {
             if (prc.getOutboundMessageContext() != null && prc.getOutboundMessageContext().getMessage() != null &&
-                    prc.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)prc.getOutboundMessageContext().getMessage();
+                    prc.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest authnRequest) {
+                return authnRequest;
             }
             return null;
         };   
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
index 8842e16..b06b3fc 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
@@ -60,8 +60,8 @@ public class IDTokenJOSEHeaderLookupStrategy extends AbstractTokenResponseLookup
             return null;
         }
         final Header header = tokenContext.getTokenResponse().getOIDCTokens().getIDToken().getHeader();
-        if (header instanceof JWSHeader) {
-            return (JWSHeader) header;
+        if (header instanceof JWSHeader jwsHeader) {
+            return jwsHeader;
         }
         return null;
     }
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
index cf5e786..e3abbe2 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
@@ -44,8 +44,8 @@ public class RequestObjectTokenUpdateStrategy implements BiConsumer<JWT, Message
     /** Constructor.*/
     public RequestObjectTokenUpdateStrategy() {
         authenticationRequestLookupStrategy = mc -> {
-            if (mc.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)mc.getMessage();
+            if (mc.getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };   
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
index c415d9b..19ec9c6 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
@@ -53,9 +53,8 @@ public class JWTBearerTokenForClientAuthenticationPredicate extends AbstractRely
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-                final String authMethod = 
-                        ((OIDCAuthenticationRelyingPartyProfileConfiguration) pc).getTokenEndpointAuthMethod(prc);
+            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration config) {
+                final String authMethod = config.getTokenEndpointAuthMethod(prc);
                 final ClientAuthenticationMethod method = new ClientAuthenticationMethod(authMethod);
                 if (method.equals(ClientAuthenticationMethod.CLIENT_SECRET_JWT) || 
                         method.equals(ClientAuthenticationMethod.PRIVATE_KEY_JWT)) {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
index eccfee3..f7986bd 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
@@ -74,9 +74,8 @@ public class RequestObjectRequiredAndSupported extends AbstractRelyingPartyPredi
         
         boolean requestObjectRequestedFromConfig = false;        
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            requestObjectRequestedFromConfig = ((OIDCAuthenticationRelyingPartyProfileConfiguration) 
-                    rpc.getProfileConfig()).isUseRequestObject(input);
+        if (rpc != null && rpc.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            requestObjectRequestedFromConfig = rpConfig.isUseRequestObject(input);
         }
         
         final OIDCProviderMetadataContext metadata = oidcProviderMetadataContextLookupStrategy.apply(input);
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
index aba8dea..ed6489a 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
@@ -72,9 +72,8 @@ public class RequiresSignatureVerificationPredicate extends AbstractRelyingParty
         boolean tlsServerValidationOnly = false;        
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(msgContext);
         
-        if (rpc != null && rpc.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            tlsServerValidationOnly = ((OIDCAuthenticationRelyingPartyProfileConfiguration) 
-                    rpc.getProfileConfig()).isTlsServerValidationSufficient(prc);
+        if (rpc != null && rpc.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            tlsServerValidationOnly = rpConfig.isTlsServerValidationSufficient(prc);
         }
        
         final AbstractAuthenticatableOIDCContext authContext = 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
index abd9c64..5689f91 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
@@ -39,11 +39,9 @@ public class UserInfoLookupCondition implements Predicate<ProfileRequestContext>
         }
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         if (rpCtx != null && rpCtx.getProfileConfig() != null &&
-                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            final OIDCAuthenticationRelyingPartyProfileConfiguration profileConfiguration = 
-                    (OIDCAuthenticationRelyingPartyProfileConfiguration) rpCtx.getProfileConfig();
-            return profileConfiguration.isRetrieveUserInfoEndpointClaims(prc);
-        } 
+                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            return rpConfig.isRetrieveUserInfoEndpointClaims(prc);
+        }
         
         // Perform user info lookup by default if no config found
         return true;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
index 09f829b..a0e8d9a 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
@@ -48,8 +48,8 @@ public class JWTClaimsSetFromRequestObjectLookupFunction implements Function<Mes
     /** Constructor.*/
     public JWTClaimsSetFromRequestObjectLookupFunction() {
         authenticationRequestLookupStrategy = mc -> {
-            if (mc.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)mc.getMessage();
+            if (mc.getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };   
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
index c57abd4..3bf58db 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
@@ -50,8 +50,8 @@ public class PayloadFromRequestObjectLookupFunction implements Function<MessageC
     /** Constructor.*/
     public PayloadFromRequestObjectLookupFunction() {
         authenticationRequestLookupStrategy = mc -> {
-            if (mc.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)mc.getMessage();
+            if (mc.getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };   
@@ -74,8 +74,8 @@ public class PayloadFromRequestObjectLookupFunction implements Function<MessageC
             return null;
         }
         final OIDCAuthenticationRequest authnRequest = authenticationRequestLookupStrategy.apply(messageContext);
-        if (authnRequest.getRequestObject() instanceof SignedJWT) {
-            return new Payload((SignedJWT) authnRequest.getRequestObject());
+        if (authnRequest.getRequestObject() instanceof SignedJWT signedJwt) {
+            return new Payload(signedJwt);
         } else if (authnRequest.getRequestObject() instanceof PlainJWT) {
             try {
                 return new Payload(authnRequest.getRequestObject().getJWTClaimsSet().getClaims());
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/RequestObjectSupportedSignatureSigningAlgorithms.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/RequestObjectSupportedSignatureSigningAlgorithms.java
index f8e8c09..d150996 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/RequestObjectSupportedSignatureSigningAlgorithms.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/RequestObjectSupportedSignatureSigningAlgorithms.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.plugin.authn.oidc.rp.messaging.context.navigate;
 
 import java.util.List;
 import java.util.function.Function;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
@@ -39,7 +38,7 @@ public class RequestObjectSupportedSignatureSigningAlgorithms implements Functio
             return null;
         }
         return metadata.getRequestObjectJWSAlgs()
-                .stream().map(JWSAlgorithm::getName).collect(Collectors.toList());
+                .stream().map(JWSAlgorithm::getName).toList();
     }
 
 }
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
index e3a9faa..509ccfd 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
@@ -100,8 +100,8 @@ public class OAuth2AccessTokenPrincipal implements CloneablePrincipal {
             return true;
         }
 
-        if (other instanceof OAuth2AccessTokenPrincipal) {
-            return accessToken.equals(((OAuth2AccessTokenPrincipal) other).getName());
+        if (other instanceof OAuth2AccessTokenPrincipal principal) {
+            return accessToken.equals(principal.getName());
         }
 
         return false;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
index 1c56f1b..e4d354c 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
@@ -66,8 +66,8 @@ public class OAuth2RefreshTokenPrincipal implements CloneablePrincipal {
             return true;
         }
 
-        if (other instanceof OAuth2RefreshTokenPrincipal) {
-            return refreshToken.equals(((OAuth2RefreshTokenPrincipal) other).getName());
+        if (other instanceof OAuth2RefreshTokenPrincipal principal) {
+            return refreshToken.equals(principal.getName());
         }
 
         return false;
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
index 7fc00ea..5e5d207 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
@@ -66,8 +66,8 @@ public class OIDCSubjectIdentifierPrincipal implements CloneablePrincipal {
             return true;
         }
 
-        if (other instanceof OIDCSubjectIdentifierPrincipal) {
-            return subject.equals(((OIDCSubjectIdentifierPrincipal) other).getName());
+        if (other instanceof OIDCSubjectIdentifierPrincipal principal) {
+            return subject.equals(principal.getName());
         }
 
         return false;
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/ProxyAuthenticationFlowAuditExtractor.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/ProxyAuthenticationFlowAuditExtractor.java
index 7826025..9df64e6 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/ProxyAuthenticationFlowAuditExtractor.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/ProxyAuthenticationFlowAuditExtractor.java
@@ -39,8 +39,7 @@ public class ProxyAuthenticationFlowAuditExtractor implements Function<ProfileRe
 
         if (input != null) {
             final BaseContext baseContext = input.getParent();
-            if (baseContext instanceof AuthenticationContext) {
-                final AuthenticationContext authnCtx = (AuthenticationContext)baseContext;
+            if (baseContext instanceof AuthenticationContext authnCtx) {;
                 if (authnCtx.getAttemptedFlow()!= null) {
                     return authnCtx.getAttemptedFlow().getId();
                 }
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
index 25b8c9b..0cc81b8 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
@@ -275,8 +275,8 @@ public class AuthorizationController extends AbstractInitializableComponent {
         // Find which response mode to expect from that set in the authentication request
         OIDCAuthenticationRequest authnRequest = null;
         if (nestedPRC.getOutboundMessageContext() != null &&
-                nestedPRC.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest) {
-            authnRequest = (OIDCAuthenticationRequest) nestedPRC.getOutboundMessageContext().getMessage();
+                nestedPRC.getOutboundMessageContext().getMessage() instanceof OIDCAuthenticationRequest authenticationRequest) {
+            authnRequest = authenticationRequest;
         }
         
         if (authnRequest == null) {
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
index 7875437..4e90f67 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.plugin.authn.oidc.rp.impl;
 import java.time.Duration;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -251,8 +250,7 @@ public class BuildRequestObject extends AbstractAuthenticationAction {
             // Only add ACR values as acr_values if the provider does not support the 'claims' claim.             
             final String acrString = String.join(" ", authnRequest.getAcrs()
                     .stream()
-                    .map(ACR::getValue)
-                    .collect(Collectors.toUnmodifiableList()));
+                    .map(ACR::getValue).toList());
             requestObjectClaims.setClaim("acr_values", acrString);
         }
         
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
index 1439fae..2eb4a1e 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
@@ -97,10 +97,10 @@ public class ExchangeCodeForAccessToken extends AbstractHttpOIDCAuthenticationAc
           }
           try {   
               final TokenResponse responseObject = handleRequest(profileRequestContext, responseCtx);
-              if (responseObject instanceof OIDCTokenResponse) {
-                  responseCtx.setTokenResponse((OIDCTokenResponse)responseObject);
+              if (responseObject instanceof OIDCTokenResponse tokenResponse) {
+                  responseCtx.setTokenResponse(tokenResponse);
                   log.trace("{} Token request response was successful '{}'",getLogPrefix(), 
-                          ((OIDCTokenResponse)responseObject).indicatesSuccess());
+                		  tokenResponse.indicatesSuccess());
               } else {
                   throw new OIDCRPException("Token response was not of the expected format, expected OIDC token "
                           + "response, got " + responseObject.getClass().getSimpleName());
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
index 172cc2f..841a183 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
@@ -237,8 +237,8 @@ public class InitializeOAuth2ClientAuthenticationMethodHandler extends AbstractM
         
         final RelyingPartyContext rpCtx = relyingPartyContextLookupStrategy.compose(PRC_LOOKUP).apply(messageContext);     
         if (rpCtx != null && rpCtx.getConfiguration() != null &&
-                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            profileConfiguration = (OIDCAuthenticationRelyingPartyProfileConfiguration) rpCtx.getProfileConfig();
+                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            profileConfiguration = rpConfig;
         }
         if (profileConfiguration == null) {
             log.error("{} Profile configuration not found", getLogPrefix());   
@@ -474,10 +474,10 @@ public class InitializeOAuth2ClientAuthenticationMethodHandler extends AbstractM
 
         final JWSAlgorithm algorithm = new JWSAlgorithm(params.getSignatureAlgorithm());
         final Credential credential = params.getSigningCredential();
-        if (credential instanceof JWKCredential && !algorithm.equals(((JWKCredential) credential).getAlgorithm())) {
+        if (credential instanceof JWKCredential jwkCred && !algorithm.equals(jwkCred.getAlgorithm())) {
             log.debug("{} Signature signing algorithm {} differs from JWK algorithm '{}'", getLogPrefix(),
-                    algorithm.getName(), ((JWKCredential) credential).getAlgorithm() != null ? 
-                            ((JWKCredential) credential).getAlgorithm() : "not specified");            
+                    algorithm.getName(), jwkCred.getAlgorithm() != null ? 
+                            jwkCred.getAlgorithm() : "not specified");            
         }
         log.trace("{} Algorithm resolved {}", getLogPrefix(), algorithm.getName());
         return algorithm;
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
index 198fe1b..1cb64cc 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
@@ -139,8 +139,8 @@ public class InitializeOAuth2ClientContext extends AbstractProfileAction {
         
         final RelyingPartyContext rpCtx = relyingPartyContextLookupStrategy.apply(profileRequestContext);     
         if (rpCtx != null && rpCtx.getConfiguration() != null &&
-                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            profileConfiguration = (OIDCAuthenticationRelyingPartyProfileConfiguration) rpCtx.getProfileConfig();
+                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            profileConfiguration = rpConfig;
         }
         if (profileConfiguration == null) {
             log.error("{} OIDCAuthorizationConfiguration not found", getLogPrefix());
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateAuthenticationResponseResult.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateAuthenticationResponseResult.java
index 2c3eec6..84589a0 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateAuthenticationResponseResult.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateAuthenticationResponseResult.java
@@ -60,8 +60,8 @@ public class ValidateAuthenticationResponseResult extends AbstractAuthentication
             return false;
         }
        
-        if (inMsgContext.getMessage() instanceof AuthenticationResponse) {
-            authenticationResponse = (AuthenticationResponse) inMsgContext.getMessage();
+        if (inMsgContext.getMessage() instanceof AuthenticationResponse response) {
+            authenticationResponse = response;
         } else {
             log.debug("{} Inbound message was not an authentication response", getLogPrefix());
             ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MSG_CTX);
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
index 2fd8e77..ae3b3a6 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
@@ -74,7 +74,6 @@ import net.shibboleth.shared.annotation.constraint.Live;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.service.ReloadableService;
 import net.shibboleth.shared.service.ServiceException;
@@ -231,13 +230,6 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
         
         attributeExtractionStrategy = strategy;
     }
-    
-    /** {@inheritDoc} */
-    @Override
-    protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-
-    }
 
  // Checkstyle: CyclomaticComplexity|ReturnCount|MethodLength OFF    
     @Override
@@ -343,7 +335,7 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
             if (newAttributes != null) {
                 if (log.isDebugEnabled()) {
                     log.debug("{} Extracted attributes with custom strategy: {}", getLogPrefix(),
-                            newAttributes.stream().map(IdPAttribute::getId).collect(Collectors.toUnmodifiableList()));
+                            newAttributes.stream().map(IdPAttribute::getId).toList());
                 }
                 attributes.addAll(newAttributes);
                 attributeContext.setIdPAttributes(attributes);
@@ -386,14 +378,13 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
     protected Subject populateSubject(@Nonnull final Subject subject) {   
                 
         if (acrTranslator != null && endUserContext.getUnprocessedIdTokenClaims().getClaim("acr") != null
-                && endUserContext.getUnprocessedIdTokenClaims().getClaim("acr") instanceof String) {
-            final String acr =  (String)endUserContext.getUnprocessedIdTokenClaims().getClaim("acr");
+                && endUserContext.getUnprocessedIdTokenClaims().getClaim("acr") instanceof String acr) {
             final Collection<Principal> translated = acrTranslator.apply(List.of(acr));
             if (translated != null && !translated.isEmpty()) {
                 subject.getPrincipals().addAll(translated);
                 if (log.isDebugEnabled()) {
                     log.debug("{} Added translated ACR Principals: {}", getLogPrefix(),
-                            translated.stream().map(Principal::getName).collect(Collectors.toUnmodifiableList()));
+                            translated.stream().map(Principal::getName).toList());
                 }
             }
         }
@@ -407,7 +398,7 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
                     subject.getPrincipals().addAll(translated);
                     if (log.isDebugEnabled()) {
                         log.debug("{} Added translated AMR Principals: {}", getLogPrefix(),
-                                translated.stream().map(Principal::getName).collect(Collectors.toUnmodifiableList()));
+                                translated.stream().map(Principal::getName).toList());
                     }
                 }
             } catch (final ParseException e) {
@@ -427,7 +418,7 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
                 attributeContext.getIdPAttributes().values()
                     .stream()
                     .map(IdPAttributePrincipal::new)
-                    .collect(Collectors.toUnmodifiableList()));
+                    .toList());
         }
         
         if (contextToPrivateCredentialsMappingStrategy != null) {
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
index 6545df9..f135ad7 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
@@ -240,8 +240,8 @@ public abstract class AbstractOIDCAuthenticationRequestActionMessageHandler exte
         }
         final RelyingPartyContext rpCtx = adapt(relyingPartyContextLookupStrategy).apply(messageContext);
         if (rpCtx != null && rpCtx.getConfiguration() != null &&
-                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-            profileConfiguration = (OIDCAuthenticationRelyingPartyProfileConfiguration) rpCtx.getProfileConfig();
+                rpCtx.getProfileConfig() instanceof OIDCAuthenticationRelyingPartyProfileConfiguration rpConfig) {
+            profileConfiguration = rpConfig;
         }
         if (profileConfiguration == null) {
             throw new MessageHandlerException("Profile configuration could not found");
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
index 81e0ba1..7584ccc 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
@@ -61,8 +61,8 @@ public abstract class AbstractOIDCAuthenticationRequestMessageHandler extends Ab
         outboundMessageHandlerContextLookupStrategy = new ChildContextLookup<>(OutboundMessageHandlerContext.class);
         
         authenticationRequestLookupStrategy = mc -> {
-            if (mc.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)mc.getMessage();
+            if (mc.getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandler.java
index 795b5a4..094f306 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandler.java
@@ -81,8 +81,7 @@ public class AddAuthenticationContextClassReferencesHandler
        return principals.stream()
            .filter(AuthenticationContextClassReferencePrincipal.class::isInstance)
            .map(AuthenticationContextClassReferencePrincipal.class::cast)
-           .map(p -> new ACR(p.getName()))
-           .collect(Collectors.toUnmodifiableList());
+           .map(p -> new ACR(p.getName())).toList();
    }
     
     
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandler.java
index 6ebb7e7..5b46377 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandler.java
@@ -44,8 +44,8 @@ public class AddPassiveAuthenticationHandler extends AbstractOIDCAuthenticationR
         
         final ProfileRequestContext prc = lookupProfileRequestContext(messageContext);
         boolean isPassive = false;
-        if (prc != null && prc.getParent() instanceof AuthenticationContext) {
-            isPassive = ((AuthenticationContext) prc.getParent()).isPassive();
+        if (prc != null && prc.getParent() instanceof AuthenticationContext authnContext) {
+            isPassive = authnContext.isPassive();
         }
         if (isPassive) {
             log.trace("{} Setting 'prompt=none' for OIDC AuthnRequest", getLogPrefix());
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
index c7f5212..7b2a1a4 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
@@ -60,8 +60,8 @@ public final class AuthenticationRequestNonceClaimLookupStrategy
         authenticationRequestLookupStrategy = prc -> {
             final MessageContext messageContext = prc.getOutboundMessageContext();
             if (messageContext != null && 
-                    messageContext.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)messageContext.getMessage();
+                    messageContext.getMessage() instanceof OIDCAuthenticationRequest authnRequest) {
+                return authnRequest;
             }
             return null;
         };
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
index a69c174..ca6bf25 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -179,7 +178,7 @@ public class ClientAuthenticationConfigurationLookupFunction
         
         final List<String> filtered = algorithms.stream()
             .filter(Objects::nonNull).filter(Predicate.not(String::isEmpty)).map(JWSAlgorithm::parse)
-            .filter(algFamily::contains).map(Algorithm::getName).collect(Collectors.toList());
+            .filter(algFamily::contains).map(Algorithm::getName).toList();
         return Collections.unmodifiableList(filtered);
     }
 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
index 18d4e5e..0108178 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
@@ -60,8 +60,8 @@ public class NonceValidationActivationCondition implements BiPredicate<ProfileRe
         authenticationRequestLookupStrategy = prc -> {
             final MessageContext messageContext = prc.getOutboundMessageContext();
             if (messageContext != null && 
-                    messageContext.getMessage() instanceof OIDCAuthenticationRequest) {
-                return (OIDCAuthenticationRequest)messageContext.getMessage();
+                    messageContext.getMessage() instanceof OIDCAuthenticationRequest request) {
+                return request;
             }
             return null;
         };
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowPreRedirectTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowPreRedirectTest.java
index c87402b..df88a93 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowPreRedirectTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowPreRedirectTest.java
@@ -338,6 +338,7 @@ public class OIDCRPFlowPreRedirectTest extends OIDCRPFlowTest {
         final var nestedPrc = prc.getSubcontext(AuthenticationContext.class).getSubcontext(ProfileRequestContext.class);
         final OIDCAuthenticationRequest request = 
                 (OIDCAuthenticationRequest) nestedPrc.getOutboundMessageContext().getMessage();
+        assertNotNull(request);
         assertNull(request.getRequestObject());
         assertNull(request.getRequestObjectClaimsSet());
         assertNull(request.getRequestedClaims());
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
index a3e06ef..38a4e05 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
@@ -198,12 +198,12 @@ public class OIDCRPFlowTest extends AbstractAuthnXmlFlowExecutionTests {
             Map.of(
             "classpath:flow-test/flows/authn/authn-abstract-flow.xml","authn.abstract",
             "classpath:flow-test/flows/authn/conditions/conditions-flow.xml","authn/conditions",
-            "classpath:/net/shibboleth/idp/module/conf/authn/authn-events-flow.xml","authn.events");
+            "classpath:flow-test/flows/authn/authn-events-flow.xml","authn.events");
 
 
     /** Constructor.*/
     public OIDCRPFlowTest() {
-        super("http://idp.example.org");        
+        super("http://idp.example.org");      
     }
     
     
diff --git a/idp-oidc-rp-impl/src/test/resources/flow-test/flows/authn/authn-events-flow.xml b/idp-oidc-rp-impl/src/test/resources/flow-test/flows/authn/authn-events-flow.xml
new file mode 100644
index 0000000..8846677
--- /dev/null
+++ b/idp-oidc-rp-impl/src/test/resources/flow-test/flows/authn/authn-events-flow.xml
@@ -0,0 +1,22 @@
+<flow xmlns="http://www.springframework.org/schema/webflow"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow.xsd"
+      abstract="true">
+
+    <!-- ADVANCED USE ONLY -->
+    
+    <!--
+    You can ignore this file unless you are creating your own custom login subflows that want to
+    report custom events in response to unusual error or warning conditions.
+    -->
+
+    <!-- Custom error events to reflect back from user-supplied login subflows. -->
+
+    <!-- <end-state id="MyCustomEvent" /> -->
+
+    <global-transitions>
+        <!-- <transition on="MyCustomEvent" to="MyCustomEvent" /> -->
+        <transition on="#{!'proceed'.equals(currentEvent.id)}" to="InvalidEvent" />
+    </global-transitions>
+
+</flow>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list