
org.echocat.marquardt.example.ExampleApplication Maven / Gradle / Ivy
/*
* echocat Marquardt Java SDK, Copyright (c) 2015 echocat
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.echocat.marquardt.example;
import org.echocat.marquardt.authority.Authority;
import org.echocat.marquardt.authority.persistence.SessionStore;
import org.echocat.marquardt.authority.persistence.UserCatalog;
import org.echocat.marquardt.authority.persistence.UserCreator;
import org.echocat.marquardt.authority.policies.ClientAccessPolicy;
import org.echocat.marquardt.authority.policies.SessionCreationPolicy;
import org.echocat.marquardt.authority.session.ExpiryDateCalculator;
import org.echocat.marquardt.authority.session.ExpiryDateCalculatorImpl;
import org.echocat.marquardt.authority.session.SessionCreator;
import org.echocat.marquardt.authority.session.SessionRenewal;
import org.echocat.marquardt.common.CertificateValidator;
import org.echocat.marquardt.common.domain.DeserializingFactory;
import org.echocat.marquardt.common.keyprovisioning.KeyPairProvider;
import org.echocat.marquardt.common.keyprovisioning.TrustedKeysProvider;
import org.echocat.marquardt.common.serialization.RolesDeserializer;
import org.echocat.marquardt.example.domain.CustomSignUpAccountData;
import org.echocat.marquardt.example.domain.ExampleRoles;
import org.echocat.marquardt.example.domain.PersistentSession;
import org.echocat.marquardt.example.domain.PersistentUser;
import org.echocat.marquardt.example.domain.UserCredentials;
import org.echocat.marquardt.example.domain.UserInfo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.Optional;
@SpringBootApplication
@Import(SecurityConfiguration.class)
public class ExampleApplication {
public static void main(final String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
@Bean
public ExpiryDateCalculator expiryDateCalculator() {
return new ExpiryDateCalculatorImpl<>();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SessionCreator sessionCreator(
final SessionStore sessionStore,
final UserCatalog userCatalog,
final ExpiryDateCalculator expiryDateCalculator,
final KeyPairProvider issuerKeyProvider,
final Optional sessionCreationPolicy) {
final SessionCreator result = new SessionCreator<>(sessionStore, userCatalog, expiryDateCalculator, issuerKeyProvider);
sessionCreationPolicy.ifPresent(result::setSessionCreationPolicy);
return result;
}
@Bean
public SessionRenewal sessionRenewal(
final SessionStore sessionStore,
final UserCatalog userCatalog,
final ExpiryDateCalculator expiryDateCalculator,
final KeyPairProvider issuerKeyProvider) {
return new SessionRenewal<>(sessionStore, userCatalog, expiryDateCalculator, issuerKeyProvider);
}
@Bean
public Authority authority(
final UserCatalog userCatalog,
final UserCreator userCreator,
final SessionCreator sessionCreator,
final SessionRenewal sessionRenewal,
final SessionStore sessionStore,
final ClientAccessPolicy clientAccessPolicy) {
return new Authority<>(userCatalog, userCreator, sessionCreator, sessionRenewal, sessionStore, clientAccessPolicy);
}
@Bean
public CertificateValidator clientSignedContentValidator(final TrustedKeysProvider keysProvider) {
return new CertificateValidator(keysProvider.getPublicKeys()) {
@Override
protected DeserializingFactory deserializingFactory() {
return UserInfo.FACTORY;
}
@Override
protected RolesDeserializer roleCodeDeserializer() {
return ExampleRoles.FACTORY;
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy