Franz
Franz

Reputation: 51

Jakarta EE 11 Security 4.0.0: @OpenIdAuthenticationMechanismDefinition annotation is not repeatable

I am trying to use two different OIDC authentication provider clients within the same Wildfly 34 Preview JakartaEE 11 web application. As far as I understand, in Jakarta EE 3.0 this is not possible but has been made possible in 4.0 by using Qualifiers.

I have created two servlets, each with the @OpenIdAuthenticationMechanismDefinitionannotation and each with their own Qualifier annotation. However on deployment I still get the error: "Ambiguous dependencies for type OpenIdAuthenticationMechanismDefinition with qualifiers @default"

My code is as follows:

@Qualifier 
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) 
public @interface QualifierA { }

@Qualifier 
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) 
public @interface QualifierB { }

@QualifierA 
@OpenIdAuthenticationMechanismDefinition( 
    providerURI = "${oidcConfigA.issuerUri}", 
    clientId = "${oidcConfigA.clientId}", 
    clientSecret = "${oidcConfigA.clientSecret}",
    redirectURI = "${baseURL}/oidcredirecturi", 
    jwksReadTimeout = 5000, 
    jwksConnectTimeout = 5000) @ServletSecurity(@HttpConstraint(rolesAllowed = "Everyone")) @WebServlet("/alogin") 
public class OidcLoginWebServletA extends HttpServlet {
...


@QualifierB 
@OpenIdAuthenticationMechanismDefinition( 
    providerURI = "${oidcConfigB.issuerUri}", 
    clientId = "${oidcConfigB.clientId}", 
    clientSecret = "${oidcConfigB.clientSecret}", 
    redirectURI = "${baseURL}/oidcredirecturi", 
    jwksReadTimeout = 5000, 
    jwksConnectTimeout = 5000) @ServletSecurity(@HttpConstraint(rolesAllowed = "Everyone")) @WebServlet("/blogin") 
public class OidcLoginWebServletB extends HttpServlet {
...

I do not know if I am using the feature wrong or if this is an issue? I cannot see an example of this in the tck tests.

Upvotes: 0

Views: 49

Answers (0)

Related Questions