使用spring security oauth2和spring security构建sso sdk,但在项目中使用sso sdk时遇到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

我正试图通过spring boot starter security和spring-security-oauth2-autoconfigure构建一个sso sdk,并将其用于需要sso功能的oa项目中。当我尝试访问oa时,它从授权服务器重定向到登录页面,这很好。当我点击登录按钮后,结果是“404”页面而不是我的客户端应用程序配置文件页面

在这个过程中检查网络调用,结果是标准的oauth2授权\代码模式过程,我认为这是正确的,除了最终重定向到概要文件页面调用,即404


我的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";
    }

}