使用spring security oauth2和spring security构建sso sdk,但在项目中使用sso sdk时遇到404问题
我正试图通过spring boot starter security和spring-security-oauth2-autoconfigure构建一个sso sdk,并将其用于需要sso功能的oa项目中。当我尝试访问oa时,它从授权服务器重定向到登录页面,这很好。当我点击登录按钮后,结果是“404”页面而不是我的客户端应用程序配置文件页面 在这个过程中检查网络调用,结果是标准的oauth2授权\代码模式过程,我认为这是正确的,除了最终重定向到概要文件页面调用,即404使用spring security oauth2和spring security构建sso sdk,但在项目中使用sso sdk时遇到404问题,sdk,single-sign-on,spring-security-oauth2,Sdk,Single Sign On,Spring Security Oauth2,我正试图通过spring boot starter security和spring-security-oauth2-autoconfigure构建一个sso sdk,并将其用于需要sso功能的oa项目中。当我尝试访问oa时,它从授权服务器重定向到登录页面,这很好。当我点击登录按钮后,结果是“404”页面而不是我的客户端应用程序配置文件页面 在这个过程中检查网络调用,结果是标准的oauth2授权\代码模式过程,我认为这是正确的,除了最终重定向到概要文件页面调用,即404 我的sdk项目: po
我的sdk项目: pom: MyUserInfoRestTemplateCustomizer(这是我的自定义响应处理器,我认为与此问题无关):
我的sso客户端演示项目oa pom: 为了激活sso功能,我将@componentScan放在oa主类上,以便在如下上下文中自动连接sdk组件类:
@SpringBootApplication
@ComponentScan(basePackages = "zvos.uauth.sdk.config")
public class SsoOaApplication {
public static void main(String[] args) {
SpringApplication.run(SsoOaApplication.class, args);
}
}
还有另一个类MVC view controller,我认为这与此无关,但仅供参考:
public class SystemController {
@Value("${spring.application.name}")
private String name;
@Value("${spring.application.version}")
private String version;
@Value("${crm.profile-uri}")
public String crmProfileUri;
@RequestMapping("/profile")
public Object profile(Model model) {
model.addAttribute("name", name);
model.addAttribute("version", version);
model.addAttribute("crmProfileUri", crmProfileUri);
return "/system/profile";
}
}
我的oa项目结构视图的快照,java中只有两个类和一些页面静态资源。
我真的很想在我的项目中为sso做这个sdk的事情。我头痛了很长一段时间,花了很多时间在搜索上,但没有任何进展。我想我离决赛很近了,但我真的需要一些SpringSecurityOAuth2SSO领域的专家的帮助。非常感谢你们的建议
顺便说一句,我认为授权服务器与此无关,所以我不会在这里粘贴任何内容。因为我有另一个客户机项目,它不使用sdk,只使用spring安全本机注释,如“@EanbleOAuth2Sso”和扩展WebSecurity配置适配器。sso在这个客户机中工作得非常好
@Component
public class MyUserInfoRestTemplateCustomizer implements UserInfoRestTemplateCustomizer {
@Override
public void customize(OAuth2RestTemplate template) {
template.setAccessTokenProvider(new CustomAuthorizationCodeAccessTokenProvider());
}
public MyUserInfoRestTemplateCustomizer(){
System.out.println("MyUserInfoRestTemplateCustomizer init!!!!");
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.zvos.uauth</groupId>
<artifactId>zvos-uauth-sdk-java</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
server:
port: 10045
servlet:
context-path: /oa
spring:
application:
name: oa application
version: 1.0
oauth2-server: http://www.sso.com:5659/uauthservice
security:
oauth2:
client:
client-id: 600000060
client-secret: ASRdd2e5ffd7057
access-token-uri: ${oauth2-server}/oauth/token
user-authorization-uri: ${oauth2-server}/oauth/authorize
resource:
user-info-uri: ${oauth2-server}/user
jwt:
key-uri: ${oauth2-server}/oauth/token_key
key-value: uauth-jwt
authorization:
check-token-access: ${oauth2-server}/oauth/check_token
logging:
level:
org:
springframework: on
org.springframework.security.: debug
@SpringBootApplication
@ComponentScan(basePackages = "zvos.uauth.sdk.config")
public class SsoOaApplication {
public static void main(String[] args) {
SpringApplication.run(SsoOaApplication.class, args);
}
}
public class SystemController {
@Value("${spring.application.name}")
private String name;
@Value("${spring.application.version}")
private String version;
@Value("${crm.profile-uri}")
public String crmProfileUri;
@RequestMapping("/profile")
public Object profile(Model model) {
model.addAttribute("name", name);
model.addAttribute("version", version);
model.addAttribute("crmProfileUri", crmProfileUri);
return "/system/profile";
}
}