<p dir="ltr">If all you want is to deny access to any SP other than your password-change SP, you can do that within relying-party.xml. Make an expired-password flow with activation condition some ldap or scripted attribute. Add to DefaultRelyingParty's postAuthenticationFlows. Omit from the stanza for your special SP.</p>
<p dir="ltr"><bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"><br>
<property name="profileConfigurations"><br>
<list><br>
<!-- <a href="https://wiki.shibboleth.net/confluence/display/IDP30/ConsentConfiguration#ConsentConfiguration-DisablingAttributeReleaseConsent">https://wiki.shibboleth.net/confluence/display/IDP30/ConsentConfiguration#ConsentConfiguration-DisablingAttributeReleaseConsent</a> --><br>
<bean parent="SAML2.SSO" p:postAuthenticationFlows="expired-password,expiring-password,require-challenge-questions,local-motd-context-check,attribute-release"</p>
<p dir="ltr">and so on.</p>
<p dir="ltr">Oh, but then your users will have to enter username/password twice (once on the site they wanted, where login will fail, then follow link to the whitelisted SP where authentication will succeed). I can see that being unacceptable to some. </p>