<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span>Our idp 3.4.6 configuration had a condition on the shibboleth.SessionManager, which enforced consistent address checks for a range *outside of* a set of CIDR blocks. In 3.4.6, the configuration was<br>
</span>
<div><br>
</div>
<div>idp.properties:</div>
<div>idp.session.consistentAddressCondition = custom.CheckAddressForNonLocalOnly<br>
</div>
<div><br>
</div>
<div>global.xml<br>
</div>
<div> <bean id="custom.CheckAddressForNonLocalOnly" parent="shibboleth.Conditions.NOT"><br>
</div>
<div> <constructor-arg ref="custom.WhitelistIPCheck" /><br>
</div>
<div> </bean><br>
</div>
<div> <bean id="custom.WhitelistIPCheck"<br>
</div>
<div> class="org.opensaml.profile.logic.IPRangePredicate"<br>
</div>
<div> p:httpServletRequest-ref="shibboleth.HttpServletRequest"<br>
</div>
<div> ><br>
</div>
<div> <property name="ranges"><br>
</div>
<div> <list><br>
</div>
<div> <bean class="net.shibboleth.utilities.java.support.net.IPRange" factory-method="parseCIDRBlock" c:cidrBlock="..."/><br>
</div>
<div> ...<br>
</div>
<div> </list><br>
</div>
<div> </property><br>
</div>
<div> </bean><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>In idp 4.0.0, the consistentAddressCondition property in the shibboleth.SessionManager bean now uses a BiPredicate instead of a Predicate. For the IP check itself, it appears I need to change the class from org.opensaml.profile.logic.IPRangePredicate to
net.shibboleth.idp.session.logic.IPRangeBiPredicate. However, trying to invert that result with a shibboleth.Conditions.NOT predicate no longer works, as there is no conversion between Predicate and BiPredicate.<br>
</div>
<div><br>
</div>
<div>Is there a better way of configuring this so that there is no Predicate/BiPredicate mismatch?<br>
</div>
<div><br>
</div>
<div>Thanks,<br>
</div>
<div>Chad<br>
</div>
<span></span><br>
</div>
</body>
</html>