Ping MFA with Shibboleth IDP 5

Dan McLaughlin dmclaughlin at tech-consortium.com
Thu Aug 7 23:53:09 UTC 2025


I found some older documentation related to older versions of the IDP,
but it seems there have been enough changes in IDP 5 that these steps
won't work anymore.

Shibboleth Configuration to Redirect to PingOne MFA
1. Enable MFA Feature
Edit: conf/idp.properties

Add or update the following property:
idp.authn.flows = MFA

2. Configure the MFA Flow
Edit: conf/authn/mfa-authn-config.xml

Add the following TransitionMap bean:
<bean id="shibboleth.authn.MFA.TransitionMap" class="java.util.HashMap">
    <entry key="authn/Password">
        <value>authn/PingOne</value>
    </entry>
</bean>

3. Define PingOne MFA as an External Flow
Edit or create: conf/authn/external-authn-config.xml

Add:
<util:list id="shibboleth.authn.External.externalAuthnFlows">
    <value>PingOne</value>
</util:list>

Create the flow descriptor: flows/authn/external/PingOne/flow.xml
<flow xmlns="http://www.springframework.org/schema/webflow"
start-state="Redirect">
    <view-state id="Redirect" view="external-authn/pingone-mfa.jsp">
        <transition on="proceed" to="proceed"/>
    </view-state>
    <end-state id="proceed"/>
</flow>

4. Create the Redirect Page (JSP)
Create: views/external-authn/pingone-mfa.jsp

This page should automatically post a SAML AuthnRequest to PingOne:
<html>
<body onload="document.forms[0].submit()">
<form method="POST" action=" https://auth.pingone.com/<ID> /saml20/idp/sso">
    <input type="hidden" name="SAMLRequest" value="${samlRequest}"/>
    <input type="hidden" name="RelayState" value="${relayState}"/>
</form>
</body>
</html>

5. Define Flow in Shibboleth

Edit: conf/authn/general-authn.xml

Ensure PingOne is listed as a valid flow:
<util:list id="shibboleth.authn.flows">
    <value>External</value>
    <value>Password</value>
    <value>PingOne</value>
</util:list>

6. Metadata and Certificates
Edit: conf/metadata-providers.xml

Add PingOne's metadata:
<MetadataProvider id="PingOne" xsi:type="FilesystemMetadataProvider"
                  metadataFile="/opt/shibboleth-idp/metadata/pingone-sp.xml"
                  failFastInitialization="true">
    <MetadataFilter xsi:type="SignatureValidation"

certificateFile="/opt/shibboleth-idp/credentials/pingone.crt"
                    requireSignedRoot="true"/>
</MetadataProvider>

Flow Summary
1. User authenticates with Shibboleth using Password.
2. MFA flow transitions to PingOne external authentication.
3. The user is redirected to PingOne for MFA.
4. PingOne returns a SAML Response to Shibboleth.
5. Shibboleth finalizes authentication and releases assertion to the SP.


--

Thanks,

Dan

On Thu, Aug 7, 2025 at 6:26 PM Dan McLaughlin
<dmclaughlin at tech-consortium.com> wrote:
>
> Has anyone tried configuring Ping MFA with Shibboleth IDP 5?
>
>
> --
>
> Thanks,
>
> Dan


More information about the users mailing list