Concepto de inicio de sesión único
El inicio de sesión único, denominado SSO, es una de las soluciones más populares para la integración empresarial empresarial. La definición de SSO es que en múltiples sistemas de aplicación, los usuarios solo necesitan iniciar sesión una vez para acceder a todos los sistemas de aplicación de confianza mutua. La lógica de inicio de sesión se muestra en la figura anterior
Implementación basada en el cubo de la familia de primavera
Selección técnica:
Cliente:
dependencia de maven
<Spendency> <MoupRupid> org.springframework.boot </groupid> <artifactID> spring-boot-starter-web </artifactid> </pendency> <paperency> <grupoD> org.springframework.boot </groupId> <artifactid> Spring-boot-starter-epurity </artifactid> </dependency> </dependency> <MoupRid> org.springframework.security.oauth </proupid> <artifactid> spring-security-oauth2 </artifactid> </pepertency> <pendency> <MoupRupid> org.springframework.security </groupId> <ArFactId> Spring-Security -JWT </artifactid> </Dependency> </Dependency>
EndableAauth2Sso Annotation
Configuración de la clase de entrada @@ endableauth2sso
@SpringBootApplicationPublic Class PigsSoclientDemoApplication {public static void main (string [] args) {springapplication.run (pigssoclientdemoapplication.class, args); }}Archivo de configuración
Seguridad: OAuth2: Cliente: Cliente-ID: Pig Client-Secret: Pig User-Authorization-URI: http: // localhost: 3000/oauth/autorize access-token-uri: http: // localhost: 3000/oauth/token scope: recurso del servidor: jwt: key-uri: http: // localhost: 3000/tok/token ost Sesiones: nunca
Servidor de autenticación SSO
Configuración del servidor de autenticación
@Configuration@Order(Integer.MIN_VALUE)@EnableAuthorizationServerpublic class PigAuthorizationConfig extends AuthorizationServerConfigurerAdapter { @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory() .withClient(authServerConfig.getClientId()) .secret (authserverCig.getClientSecret ()) .AuthorizedGrantTypes (SecurityConstants.Refresh_Token, SecurityConstants.Password, SecurityConstants.authorization_code) .Scopes (authserverConfig.getScope ()); } @Override public void configure (autorizationserVerEndPointSconfigurer endpoints) {EndPoints .TokenStore (new RedistokenStore (redisConnectionFactory)) .accesstokenconverter (jwtaccesstokenconverter ().). .reuseRefreshTokens (falso) .UserDetailsService (userDetailsService); } @Override public void configure (autorizationserverSecurityConfigurer Security) lanza la excepción {Security .LOWFormAuthenticationForClients () .TokenkeyAccess ("ISAUTHENTICADO ()") .CHECKTOKINACESS ("Permitall ()"); } @Bean public PasswordEncoder PasswordEncoder () {return new bcRyptPassPassWordEnder (); } @Bean public Jwtaccesstokenconverter jwtaccesstokenconverter () {jwtaccesstokenconverter jwtaccesstokenconverter = new jwtaccesstokenconverter (); jwtaccesstokenconverter.setsigningkey (CommonConstant.sign_Key); return jwtaccesstokenconverter; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.