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
大功告成
我找一下怎么录短视频图片的