Spring Cloudに基づいていくつかの行の構成が完了しました。


シングルポイント登録概念
シングルポイント登録(Single Sign On)は、SSOと略称し、現在流行している企業業務統合のソリューションの一つです。SSOの定義は、複数のアプリケーションシステムにおいて、ユーザが一度登録するだけで、すべての相互信頼されたアプリケーションシステムにアクセスできるというものです。登録ロジックは上の通りです。
Springファミリーバケツによる実現
技術の選択:
  • Spring Boot
  • Spring Coud
  • Spring Security oAuth 2
  • クライアント:
    maven依存
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.security.oauth</groupId>
      <artifactId>spring-security-oauth2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-jwt</artifactId>
    </dependency>
    
    EnbaleOAuth 2 Ssoコメント
    入口類配置@@EnbaleOAuth 2 Sso
    
    @SpringBootApplication
    public class PigSsoClientDemoApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(PigSsoClientDemoApplication.class, args);
      }
    
    }
    
    
    設定ファイル
    
    security:
     oauth2:
      client:
       client-id: pig
       client-secret: pig
       user-authorization-uri: http://localhost:3000/oauth/authorize
       access-token-uri: http://localhost:3000/oauth/token
       scope: server
      resource:
       jwt:
        key-uri: http://localhost:3000/oauth/token_key
     sessions: never
    SSO認証サーバ
    認証サーバの設定
    
    @Configuration
    @Order(Integer.MIN_VALUE)
    @EnableAuthorizationServer
    public class PigAuthorizationConfig extends AuthorizationServerConfigurerAdapter {
      @Override
      public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
            .withClient(authServerConfig.getClientId())
            .secret(authServerConfig.getClientSecret())
            .authorizedGrantTypes(SecurityConstants.REFRESH_TOKEN, SecurityConstants.PASSWORD,SecurityConstants.AUTHORIZATION_CODE)
            .scopes(authServerConfig.getScope());
      }
    
      @Override
      public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        endpoints
            .tokenStore(new RedisTokenStore(redisConnectionFactory))
            .accessTokenConverter(jwtAccessTokenConverter())
            .authenticationManager(authenticationManager)
            .exceptionTranslator(pigWebResponseExceptionTranslator)
            .reuseRefreshTokens(false)
            .userDetailsService(userDetailsService);
      }
    
      @Override
      public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        security
            .allowFormAuthenticationForClients()
            .tokenKeyAccess("isAuthenticated()")
            .checkTokenAccess("permitAll()");
      }
    
      @Bean
      public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
      }
    
      @Bean
      public JwtAccessTokenConverter jwtAccessTokenConverter() {
        JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
        jwtAccessTokenConverter.setSigningKey(CommonConstant.SIGN_KEY);
        return jwtAccessTokenConverter;
      }
    }
    
    
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。