《SpringSecurityOauth2》2.SpringSecurityOauth2实现单点登陆SSO

SpringSecurityOauth2实现单点登陆只有一个注解 @EnableOAuth2Sso

昨天听说一对夫妻结婚三年都没找对门,在医生的指导下找对了门,从此过上了没羞没臊的生活。 今天也带大家入门。

认证服务器



/**
 * 认证服务器  配置               认证服务器需要配置用户登录, 保存用户信息
 */
@Configuration
@EnableAuthorizationServer
public class MyAuthorizationServerConfig extends AuthorizationServerConfigurerAdapter{
	
	@Autowired
	private AuthenticationManager authenticationManager;

	@Autowired
	private MyUserDetailsService  myUserDetailsService;
	
	@Autowired
	private TokenStore  redisTokenStore;
	
	
	/**
	 * 配置能sso登陆的客户端
	 */
	@Override
	public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
		
		InMemoryClientDetailsServiceBuilder builder = clients.inMemory(); //内存
		

		//逗号分隔成数组
		String[] authorizedGrantTypes= {"authorization_code","refresh_token","password"};
		String[] scopes= {"ROLE_USER","all"};
		
		builder.withClient("client1")
			.secret("123456")
			.accessTokenValiditySeconds(3600)
			.autoApprove(true)
			.authorizedGrantTypes(authorizedGrantTypes)
			.scopes(scopes);
		
		builder.withClient("client2")
		.secret("123456")
		.accessTokenValiditySeconds(3600)
		.autoApprove(true)
		.authorizedGrantTypes(authorizedGrantTypes)
		.scopes(scopes);
		

	}

	
	/**
	 * 生成令牌
	 */
	@Override
	public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
		endpoints.authenticationManager(authenticationManager).userDetailsService(myUserDetailsService)
				.tokenStore(redisTokenStore);
	}


    @Override
    public void configure(AuthorizationServerSecurityConfigurer security)
            throws Exception {
        security.tokenKeyAccess("permitAll()").checkTokenAccess(
                "isAuthenticated()").allowFormAuthenticationForClients();
    }


}

 资源服务器


package com.zzy.demo.config.oauth;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
 
@Configuration
@EnableResourceServer
public class MyResourceServerConfig {
 
}

 添加一个获取用户信息的rest接口

@RestController
public class UserController {

    @RequestMapping("/user/me")
    public Principal user(HttpServletRequest request,HttpServletResponse response,Principal principal,Authentication authentication,HttpSession httpSession) {
         
    	 String username=principal.getName();
        
         String  authenticationStr= FastJsonUtil.fastJsonSerialize(authentication);

         return principal;
    }

}

客户端1

@SpringBootApplication
@RestController
@EnableOAuth2Sso
public class SsoClient1Application {

	public static void main(String[] args) {
		SpringApplication.run(SsoClient1Application.class, args);
	}
	
	
	@RequestMapping({"/","/index"})
	public String index(Authentication authentication, HttpServletRequest request) {     
		return "index";
	}


}

application.properties 

server.port=7777
server.context-path=/client1

#乱码  默认utf-8
spring.http.encoding.force=true


########################################################
### sso
########################################################
security.oauth2.client.clientId= client1
security.oauth2.client.clientSecret= 123456

security.basic.enabled= false

#跳转到认证地址
security.oauth2.client.user-authorization-uri=http://127.0.0.1:9999/server/oauth/authorize

#获取token路径
security.oauth2.client.access-token-uri=http://127.0.0.1:9999/server/oauth/token

#获取用户地址
security.oauth2.resource.user-info-uri: http://127.0.0.1:9999/server/user/me

客户端2

@SpringBootApplication
@RestController
@EnableOAuth2Sso
public class SsoClient1Application {

	public static void main(String[] args) {
		SpringApplication.run(SsoClient1Application.class, args);
	}
	
	
	@RequestMapping({"/","/index"})
	public String index(Authentication authentication, HttpServletRequest request) {     
		return "index";
	}


}

 application.properties

##spring server
server.port=8888
server.context-path=/client2
#乱码  默认utf-8
spring.http.encoding.force=true


########################################################
### sso
########################################################
security.oauth2.client.clientId= client2
security.oauth2.client.clientSecret= 123456

#跳转到认证地址
security.oauth2.client.user-authorization-uri=http://127.0.0.1:9999/server/oauth/authorize

#获取token路径
security.oauth2.client.access-token-uri=http://127.0.0.1:9999/server/oauth/token

#获取用户地址
security.oauth2.resource.user-info-uri: http://127.0.0.1:9999/server/user/me

 大功告成

我找一下怎么录短视频图片的

猜你喜欢

转载自blog.csdn.net/kaige8312/article/details/83142428