首页 > 解决方案 > 如何使用 Apple 启用 Spring Boot 应用程序的 SSO oauth2

问题描述

我正在编写一个 Web Spring Boot Web 应用程序,并且我正在尝试使用 Apple 的 Oauth2 SSO 登录到我的应用程序,但是我没有在 Web 上找到任何可以指导我逐步实现这一目标的资源。我已经让它与 Google SSO 一起工作,因为我能够找到大量的材料。大多数配置发生在 Google SSO 的 application.yaml 文件中,如下所示:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: MY_CLIENT_ID
            client-secret: MY_CLIENT_SECRET

我可以很容易地从我的 google 帐户生成这些客户端 ID/秘密,并且由于我使用的是 spring-security,大多数需要的东西都覆盖了 WebSecurityConfigurerAdapter.configure(HttpSecurity http) 所以我的看起来像这样:

http.authorizeRequests()
                .antMatchers("/", "/login", "/css/**", "/js/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().permitAll()
                .loginPage("/login")
                .usernameParameter("email")
                .passwordParameter("pass")
                .defaultSuccessUrl("/main")
                .and()
                .oauth2Login()
                    .loginPage("/login")
                    .userInfoEndpoint()
                        .userService(oauthUserService)
                    .and()
                    .successHandler(new AuthenticationSuccessHandler() {
                        
                        @Override
                        public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                Authentication authentication) throws IOException, ServletException {
                            System.out.println("AuthenticationSuccessHandler invoked");
                            System.out.println("Authentication name: " + authentication.getName());
                            CustomOAuth2User oauthUser= new CustomOAuth2User((OAuth2User)authentication.getPrincipal());
                            //userService.processOAuthPostLogin(oauthUser.getEmail());
                            
                            response.sendRedirect("/main");
                        }
                    })
                    .defaultSuccessUrl("/main")
                .and()
                .logout().logoutSuccessUrl("/").permitAll()
                .and()
                .exceptionHandling().accessDeniedPage("/403")

所以我不必做任何其他事情,框架会为我处理它。但是,我正在努力寻找如何使用苹果 SSO 来实现这一目标。我想我必须在 .yaml 文件中添加这样的客户端 ID/客户端密码,其余的由框架完成,但我该如何生成它们。我已经创建了一个苹果帐户,但我是否必须注册一个开发者计划(不幸的是每年 99 美元)才能继续进行该项目?

谁能详细解释我应该怎么做才能使它工作?我找不到与将 Apple SSO 与 Spring Boot 集成相关的任何内容。我有最后期限,所以我会很感激任何帮助。

提前致谢。

标签: javaspring-securityspring-security-oauth2

解决方案


推荐阅读