提问人:kpdude 提问时间:10/3/2023 更新时间:10/3/2023 访问量:43
具有外部 clientName 参数和 ThymeLeaf 的 Spring Security 5 Oauth 配置
Spring Security 5 Oauth configuration with external clientName parameter and ThymeLeaf
问:
我们的应用程序有一个控制器映射(“/newsociallogin”),它从外部站点获取请求参数字符串类型(即“google”或“apple”),然后尝试根据标准属性配置等自动授权。我需要配置一种足够智能的方式,以便从我的初始映射中读取类型参数并继续前进。另请注意,我们启用了 ThymeLeaf,因此每个控制器方法都必须返回有效的 template/html 或重定向。在我收到调用映射重定向 uri 的提供程序的响应之前,我不想重定向到任何实际页面。
这是我目前所拥有的:
@GetMapping(value = "/newsociallogin")
public ModelAndView newInitiateLogin(@RequestParam(value = "type") String type,
HttpServletResponse response) {
log.info("Get request to /newsociallogin with type: {}", type);
ModelAndView modelAndView = new ModelAndView("redirect:/oauth_login?type=" + type);
return modelAndView;
}
@GetMapping("/oauth_login")
public ModelAndView getOauthSocial(@RequestParam(value = "type", required = true) String clientName) {
log.info("KP: in getOauthSocial, clientName = " + clientName);
if (clientName != null) {
return new ModelAndView("redirect:" + authorizationRequestBaseUri + "/" + clientName.toLowerCase());
} else {
return new ModelAndView("redirect:/");
}
}
protected void configureLocalSecurity(HttpSecurity http) throws Exception {
generateAppleClientSecret();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);
http.authorizeRequests().antMatchers(
"/",
"/oauth_login",
"/newsociallogin/**"
).permitAll()
.and()
.oauth2Login().defaultSuccessUrl("/loginSuccess")
.authorizationEndpoint()
.baseUri("/oauth_login");
http.authorizeRequests().antMatchers("/**").authenticated();
http.exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/"));
http.logout().logoutSuccessUrl("/").permitAll();
http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
http.csrf().ignoringAntMatchers("/apple", "/registerwithsocial", "/updateapple", "/registerapple");
}
问题在于在下游适当地传达传入的“type”参数并正确配置安全性。
当我检查网络流时,我看不到对 /oauth2/authorization/google 的调用实际上做了什么。
答: 暂无答案
评论