[java-identity-provider] branch main updated: IDP-2069 Null handling
Rod Widdowson
rdw at steadingsoftware.com
Thu Mar 9 15:02:20 UTC 2023
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=4c7d53d57ced6b2aa67ce08547ade3e9d039057f
The following commit(s) were added to refs/heads/main by this push:
new 4c7d53d57 IDP-2069 Null handling
4c7d53d57 is described below
commit 4c7d53d57ced6b2aa67ce08547ade3e9d039057f
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Mar 9 15:01:17 2023 +0000
IDP-2069 Null handling
https://shibboleth.atlassian.net/browse/IDP-2069
Fix some breakages from the OpenSAMl changes
Use the BaseContext#removeFromParent() method rather than the cumbersome
"get and check parent then remove" code.
---
.../shibboleth/idp/authn/impl/ValidateExternalAuthentication.java | 4 +---
.../idp/authn/revocation/impl/AttributeRevocationCondition.java | 7 ++-----
.../java/net/shibboleth/idp/profile/impl/FilterAttributes.java | 4 +---
.../saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java | 6 +++++-
.../saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java | 3 ++-
.../idp/saml/saml2/profile/impl/SAMLAuthnController.java | 1 +
.../idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java | 4 +---
.../java/net/shibboleth/idp/session/impl/DestroySessions.java | 8 +++-----
8 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
index 8d5402822..e0fe26010 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
@@ -361,9 +361,7 @@ public class ValidateExternalAuthentication extends AbstractAuditingValidationAc
try (final ServiceableComponent<AttributeFilter> component = attributeFilterService.getServiceableComponent()) {
final AttributeFilter filter = component.getComponent();
filter.filterAttributes(filterContext);
- final BaseContext parent = filterContext.getParent();
- assert parent != null;
- parent.removeSubcontext(filterContext);
+ filterContext.removeFromParent();
ac.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
} catch (final AttributeFilterException e) {
log.error("{} Error while filtering inbound attributes", getLogPrefix(), e);
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
index 7d17c443d..e4bdb18ce 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
@@ -27,7 +27,6 @@ import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.opensaml.messaging.context.BaseContext;
import org.opensaml.messaging.context.ScratchContext;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
@@ -39,8 +38,8 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.authn.AuthenticationResult;
-import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
+import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
@@ -203,9 +202,7 @@ public class AttributeRevocationCondition extends AbstractInitializableComponent
}
context.getMap().put(getClass(), records);
- final BaseContext parent = resolutionContext.getParent();
- assert parent != null;
- parent.removeSubcontext(resolutionContext);
+ resolutionContext.removeFromParent();
}
return isRevoked(principal, input2, (Collection<Instant>) context.getMap().get(getClass()));
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
index 8dccd7c80..faf3a6c25 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
@@ -382,9 +382,7 @@ public class FilterAttributes extends AbstractProfileAction {
try (final ServiceableComponent<AttributeFilter> component = attributeFilterService.getServiceableComponent()) {
final AttributeFilter filter = component.getComponent();
filter.filterAttributes(filterContext);
- final BaseContext parent = filterContext.getParent();
- assert parent != null;
- parent.removeSubcontext(filterContext);
+ filterContext.removeFromParent();
ac.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
} catch (final AttributeFilterException e) {
log.error("{} Error encountered while filtering attributes", getLogPrefix(), e);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
index abf0b2c91..889996613 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
@@ -97,7 +97,11 @@ public class IdPInitiatedSSORequestMessageDecoder extends BaseIdPInitiatedSSOReq
/** {@inheritDoc} */
@Override
@Nullable protected String getMessageToLog() {
- final Object message = Constraint.isNotNull((IdPInitiatedSSORequest) getMessageContext().getMessage(), "No message");
+ final MessageContext request = getMessageContext();
+ if (request == null) {
+ return "SAML1 initiated request did not exist?";
+ }
+ final Object message = Constraint.isNotNull(request.getMessage(), "No message");
return "SAML 1 IdP-initiated request was: " + message.toString();
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
index 00fe03489..94930bd92 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
@@ -153,7 +153,8 @@ public class IdPInitiatedSSORequestMessageDecoder extends BaseIdPInitiatedSSOReq
/** {@inheritDoc} */
@Override
@Nullable protected String getMessageToLog() {
- final Object message = getMessageContext().getMessage();
+ final MessageContext ctx = getMessageContext();
+ final Object message = ctx == null ? null : ctx.getMessage();
if (message == null || !(message instanceof XMLObject)) {
log.warn("Decoded message was null or invalid, nothing to log");
return null;
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
index c33cad224..03847feff 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
@@ -260,6 +260,7 @@ public class SAMLAuthnController extends AbstractInitializableComponent {
decoder.initialize();
decoder.decode();
final MessageContext messageContext = decoder.getMessageContext();
+ assert messageContext != null;
messageContext.addSubcontext(new SAMLMessageReceivedEndpointContext(httpRequest));
nestedPRC.setInboundMessageContext(messageContext);
} finally {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
index cadfb0efa..015518c92 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
@@ -563,9 +563,7 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
try (final ServiceableComponent<AttributeFilter> component = service.getServiceableComponent()) {
final AttributeFilter filter = component.getComponent();
filter.filterAttributes(filterContext);
- final BaseContext parent = filterContext.getParent();
- assert parent != null;
- parent.removeSubcontext(filterContext);
+ filterContext.removeFromParent();
assert attributeContext!=null;
attributeContext.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
} catch (final AttributeFilterException e) {
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
index ef6fa0f2e..0d2556dfe 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
@@ -153,7 +153,7 @@ public class DestroySessions extends AbstractProfileAction {
final LogoutContext lc = logoutContext;
assert lc != null;
- final SessionContext sc = sessionContext;
+ SessionContext sc = sessionContext;
for (final IdPSession session : lc.getIdPSessions()) {
assert session!= null;
final IdPSession idpSession = sc != null ? sc.getIdPSession() : null;
@@ -162,10 +162,8 @@ public class DestroySessions extends AbstractProfileAction {
final boolean unbind = idpSession != null ? idpSession.equals(session) : false;
if (unbind) {
assert sc != null;
- final BaseContext parent = sc.getParent();
- assert parent != null;
- parent.removeSubcontext(sc);
- sessionContext = null;
+ sc.removeFromParent();
+ sc = sessionContext = null;
}
try {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list