@ConditionalOnMissingBean(name = "webAuthnMultifactorAuthenticationProvider")
            @Bean
            @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
            public MultifactorAuthenticationProvider webAuthnMultifactorAuthenticationProvider(
                final ConfigurableApplicationContext applicationContext,
                final CasConfigurationProperties casProperties,
                @Qualifier("webAuthnMultifactorAuthenticationDeviceManager")
                final MultifactorAuthenticationDeviceManager multifactorAuthenticationDeviceManager,
                @Qualifier("failureModeEvaluator")
                final MultifactorAuthenticationFailureModeEvaluator failureModeEvaluator,
                @Qualifier("webAuthnBypassEvaluator")
                final MultifactorAuthenticationProviderBypassEvaluator webAuthnBypassEvaluator) {
                return BeanSupplier.of(MultifactorAuthenticationProvider.class)
                    .when(CONDITION.given(applicationContext.getEnvironment()))
                    .supply(() -> {
                        val webauthn = casProperties.getAuthn().getMfa().getWebAuthn();
                        val provider = new WebAuthnMultifactorAuthenticationProvider();
                        provider.setBypassEvaluator(webAuthnBypassEvaluator);
                        provider.setFailureMode(webauthn.getFailureMode());
                        provider.setFailureModeEvaluator(failureModeEvaluator);
                        provider.setOrder(webauthn.getRank());
                        provider.setId(webauthn.getId());
                        provider.setDeviceManager(multifactorAuthenticationDeviceManager);
                        return provider;
                    })
                    .otherwiseProxy()
                    .get();
            }
This is {@link WebAuthnConfiguration}.

@author Misagh Moayyed
@since 6.1.0
support/cas-server-support-webauthn/src/main/java/org/apereo/cas/config/WebAuthnConfiguration.java