如何在Spring Security oauth2中调试重定向uri?

问题描述 投票:1回答:1

我正在使用Spring Security在运行反向代理的Spring Boot Web应用程序中设置oauth2身份验证。

流速:

1)导航到我的Spring应用程序的登录页面

2)重定向到oauth提供者。登录。

3)重定向回我的redirect-uri端点

4)流程中断和默认的Spring登录页面打印:

Your login attempt was not successful, try again.

Reason: [invalid_redirect_uri_parameter]

我打开调试,控制台显示:

2019-01-30 09:46:40.094 DEBUG 1 --- [nio-8080-exec-2] o.s.s.authentication.ProviderManager     : Authentication attempt using org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationProvider
2019-01-30 09:46:40.094 DEBUG 1 --- [nio-8080-exec-2] o.s.s.authentication.ProviderManager     : Authentication attempt using org.springframework.security.oauth2.client.oidc.authentication.OidcAuthorizationCodeAuthenticationProvider
2019-01-30 09:46:40.095 DEBUG 1 --- [nio-8080-exec-2] .s.o.c.w.OAuth2LoginAuthenticationFilter : Authentication request failed: org.springframework.security.oauth2.core.OAuth2AuthenticationException: [invalid_redirect_uri_parameter] 
org.springframework.security.oauth2.core.OAuth2AuthenticationException: [invalid_redirect_uri_parameter] 
    at org.springframework.security.oauth2.client.oidc.authentication.OidcAuthorizationCodeAuthenticationProvider.authenticate(OidcAuthorizationCodeAuthenticationProvider.java:136) ~[spring-security-oauth2-client-5.0.8.RELEASE.jar!/:5.0.8.RELEASE]

浏览OidcAuthorizationCodeAuthenticationProvider.java的代码表明以下语句触发了该错误:(authorizationResponse.getRedirectUri().equals(authorizationRequest.getRedirectUri())

我检查了浏览器的请求。我的初始请求的redirect uri参数等于在提供者的站点上进行身份验证后被重定向的站点。 (否则,提供程序将抛出重定向uri不匹配错误)。

[根据另一个用户的经验(http://blog.davidvassallo.me/2018/08/10/lessons-learnt-of-spring-boot-oauth2-redirect-uris/),Spring Boot在反向代理后面运行时会看到'localhost',因此redirect-uri不再相等(当localhost不是正确的主机名时。)>]

如何获得authorizationResponse.getRedirectUri()authorizationRequest.getRedirectUri()的值?我想查看Spring Security看到的重定向uri。调试控制台不会打印这些值。

我正在使用Spring Security在运行反向代理的Spring Boot Web应用程序中设置oauth2身份验证。流:1)导航到我的Spring应用程序的登录页面2)重定向到oauth ...

spring-boot spring-security reverse-proxy spring-security-oauth2
1个回答
0
投票

我创建了一个端点,该端点打印出request.getRequestURL()。toString(),并且实际上它打印的是原始网址,而不是反向代理网址。这可能是问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.