/support/cas-server-support-trusted-mfa-mongo/src/main/java/org/apereo/cas/trusted/config/MongoDbMultifactorAuthenticationTrustConfiguration.java

https://github.com/frett/cas · Java · 65 lines · 50 code · 9 blank · 6 comment · 0 complexity · 40002807af9aeca747af02d9b6a3bb4d MD5 · raw file

  1. package org.apereo.cas.trusted.config;
  2. import org.apereo.cas.CipherExecutor;
  3. import org.apereo.cas.configuration.CasConfigurationProperties;
  4. import org.apereo.cas.mongo.MongoDbConnectionFactory;
  5. import org.apereo.cas.trusted.authentication.api.MultifactorAuthenticationTrustStorage;
  6. import org.apereo.cas.trusted.authentication.storage.MongoDbMultifactorAuthenticationTrustStorage;
  7. import lombok.val;
  8. import org.springframework.beans.factory.ObjectProvider;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Qualifier;
  11. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  12. import org.springframework.cloud.context.config.annotation.RefreshScope;
  13. import org.springframework.context.annotation.Bean;
  14. import org.springframework.context.annotation.Configuration;
  15. import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
  16. import org.springframework.data.mongodb.core.MongoTemplate;
  17. /**
  18. * This is {@link MongoDbMultifactorAuthenticationTrustConfiguration}.
  19. *
  20. * @author Misagh Moayyed
  21. * @since 5.0.0
  22. */
  23. @Configuration("mongoDbMultifactorAuthenticationTrustConfiguration")
  24. @EnableConfigurationProperties(CasConfigurationProperties.class)
  25. public class MongoDbMultifactorAuthenticationTrustConfiguration {
  26. @Autowired
  27. private CasConfigurationProperties casProperties;
  28. @Autowired
  29. @Qualifier("mfaTrustCipherExecutor")
  30. private ObjectProvider<CipherExecutor> mfaTrustCipherExecutor;
  31. @RefreshScope
  32. @Bean
  33. public PersistenceExceptionTranslationPostProcessor persistenceMfaTrustedAuthnExceptionTranslationPostProcessor() {
  34. return new PersistenceExceptionTranslationPostProcessor();
  35. }
  36. @RefreshScope
  37. @Bean
  38. public MongoTemplate mongoMfaTrustedAuthnTemplate() {
  39. val mongo = casProperties.getAuthn().getMfa().getTrusted().getMongo();
  40. val factory = new MongoDbConnectionFactory();
  41. val mongoTemplate = factory.buildMongoTemplate(mongo);
  42. factory.createCollection(mongoTemplate, mongo.getCollection(), mongo.isDropCollection());
  43. return mongoTemplate;
  44. }
  45. @RefreshScope
  46. @Bean
  47. public MultifactorAuthenticationTrustStorage mfaTrustEngine() {
  48. val mongodb = casProperties.getAuthn().getMfa().getTrusted().getMongo();
  49. val m =
  50. new MongoDbMultifactorAuthenticationTrustStorage(
  51. mongodb.getCollection(),
  52. mongoMfaTrustedAuthnTemplate());
  53. m.setCipherExecutor(mfaTrustCipherExecutor.getIfAvailable());
  54. return m;
  55. }
  56. }