javasamlsaml-2.0opensaml

How to import AuthnContextClassRef in opensaml 4.0.1?


I am trying to migrate my code from older version of opensaml to version 4.0.1

AuthnContextClassRef authnCtxClassRef = null;
            
            final AuthnContext authnCtx = existing20authnStatement.getAuthnContext();

            if (authnCtx != null) {
                authnCtxClassRef = authnCtx.getAuthnContextClassRef();

                if (authnCtxClassRef != null) {
                    authnCtxClassRefName = authnCtxClassRef.getAuthnContextClassRef();

                    if (authnCtxClassRefName != null) {
                        authNStmt.setAuthenticationInstant(now);
                        authNStmt.setAuthenticationMethod(translateAuthN20to11(authnCtxClassRefName));
                        authNStmt.setSubject(makeSubject(subjectName, nameId));

                        assertion.getAuthenticationStatements().add(authNStmt);
                    }
                }
            }

I can see, from the source code that the class is defined at org.opensaml.saml.saml2.core.AuthnContextClassRef But when I try to import it, it says

AuthnContextClassRef cannot be resolved to a type

Same goes for the class ConfirmationMethod where the code written is as follows:

final ConfirmationMethod confirmationMethod = buildObj(ConfirmationMethodBuilder.class,ConfirmationMethod.DEFAULT_ELEMENT_NAME);
confirmationMethod.setConfirmationMethod(SAML10_CM_SENDER_VOUCHES);

Solution

  • I would guess you have some dependency missing in your POM. I have a working PoC for OpenSAML 4 here. Im using the following dependecies and AuthnContextClassRef works fine.

    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-core</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-saml-api</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-saml-impl</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-messaging-api</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-messaging-impl</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-soap-api</artifactId>
        <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-soap-impl</artifactId>
        <version>4.1.1</version>
    </dependency>
    

    I tried with 4.0.1 and it also works