更改 OAuth2AuthorizationRequestRedirectFilter 的 BaseURI 未正确重定向
Posted
技术标签:
【中文标题】更改 OAuth2AuthorizationRequestRedirectFilter 的 BaseURI 未正确重定向【英文标题】:Changing BaseURI of OAuth2AuthorizationRequestRedirectFilter not Redirecting Properly 【发布时间】:2022-01-12 16:37:12 【问题描述】:我试图让OAuth2AuthorizationRequestRedirectFilter
的baseUri
使用特定于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 未正确重定向的主要内容,如果未能解决你的问题,请参考以下文章