samdjstevens / java-totp

A java library for implementing Time-based One Time Passwords for Multi-Factor Authentication.
MIT License
422 stars 103 forks source link

TotpAutoConfiguration is not loaded automatically by Spring Boot 3 #53

Open micobarac opened 11 months ago

micobarac commented 11 months ago

TotpAutoConfiguration is not being loaded automatically by Spring Boot 3. As a result, all beans defined in TotpAutoConfiguration, such as SecretGenerator, QrDataFactory, QrGenerator, CodeVerifier, are not recognized.

I had to import TotpAutoConfiguration manually in my Spring Boot 3 application:

package com.acme.config;

import dev.samstevens.totp.spring.autoconfigure.TotpAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(TotpAutoConfiguration.class)
public class TotpConfiguration {
}
limkinZero commented 10 months ago

Me too. In Spring Boot 3, there are some changes with register autoconfiguration beans in the starters. The file spring.factories has been removed.

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#auto-configuration-files

basimons commented 10 months ago

Yeah, I also had this issue. You can fix it by doing this though:

@Configuration
public class MfaConfiguration {

    @Bean
    public TimeProvider timeProvider() {
        return new SystemTimeProvider();
    }

    @Bean
    public SecretGenerator secretGenerator() {
        return new DefaultSecretGenerator();
    }

    @Bean
    public CodeGenerator codeGenerator() {
        return new DefaultCodeGenerator(HashingAlgorithm.SHA1);
    }

    @Bean
    public CodeVerifier codeVerifier(CodeGenerator codeGenerator, TimeProvider timeProvider) {
        return new DefaultCodeVerifier(codeGenerator, timeProvider);
    }
}

Which is what it used to do