更改 OAuth2AuthorizationRequestRedirectFilter 的 BaseURI 未正确重定向

Posted

技术标签:

【中文标题】更改 OAuth2AuthorizationRequestRedirectFilter 的 BaseURI 未正确重定向【英文标题】:Changing BaseURI of OAuth2AuthorizationRequestRedirectFilter not Redirecting Properly 【发布时间】:2022-01-12 16:37:12 【问题描述】:

我试图让OAuth2AuthorizationRequestRedirectFilterbaseUri 使用特定于github 的oauth 链正确重定向,但我似乎无法弄清楚。我的WebSecurityConfigurerAdapter 设置有ClientRegistrationRepository 设置,我使用以下设置base-uri:

.authorizationEndpoint()
.baseUri(GitHubRequestPaths.GITHUB_OAUTH_REDIRECT)
//Note the above is defined as:
//String GITHUB_OAUTH_REDIRECT = "/github/oauth2/authorization"

但 Spring 似乎在抱怨它无法匹配我认为正在生成的授权端点,因此它没有正确重定向到 OAuth2LoginAuthenticationFilter 的 github 登录。我在调试中看到以下内容,这正是导致我产生这个想法的原因:

2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.security.web.FilterChainProxy        : /github/oauth2/authorization at position 5 of 12 in additional filter chain; firing Filter: 'OAuth2AuthorizationRequestRedirectFilter'
2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/github/oauth2/authorization'; against '/github/oauth2/authorization/registrationId'
2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.security.web.FilterChainProxy        : /github/login at position 6 of 12 in additional filter chain; firing Filter: 'OAuth2LoginAuthenticationFilter'
2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/github/login'; against '/login/oauth2/code/*'
2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.security.web.FilterChainProxy        : /github/login at position 7 of 12 in additional filter chain; firing Filter: 'RequestCacheAwareFilter'
2021-12-07 10:20:24.015 DEBUG 11283 --- [nio-8091-exec-2] o.s.s.w.s.HttpSessionRequestCache        : saved request doesn't match

网页的设置方式是它从基本目录调用中收集登录信息,该调用返回 GitHub 登录信息,因为我将授权登录调用设置为 (/github/oauth2/authorization)。我已经尝试手动设置注册 ID (/github/oauth2/authorization/GitHub),但 Spring 只是返回一个类似的错误,即寻找与 /github/oauth2/authorization/GitHub/registrationId 匹配的错误。似乎尝试匹配baseUri + /registrationId,我可以编辑此行为吗?

【问题讨论】:

【参考方案1】:

我可以通过创建自己的 OAuth2AuthorizationRequestResolver 来解决这个问题,它几乎完全反映了 DefaultOAuth2AuthorizationRequestResolver,但注册 ID 是硬编码的。

【讨论】:

以上是关于更改 OAuth2AuthorizationRequestRedirectFilter 的 BaseURI 未正确重定向的主要内容,如果未能解决你的问题,请参考以下文章

在运行时更改方向更改 ViewControllers

UIScrollView 更改 contentOffset 时更改框架

HAC集群更改IP(单节点更改全部节点更改)

HAC集群更改IP(单节点更改全部节点更改)

设备方向更改时更改 UIImage

phpmyadmin 在更改任何值时更改日期