SpringCloud+OAuth2.0+SpringSecurity遇到的一个问题

前提:

  • 我在用 SpringCloud+OAuth2.0+SpringSecurity 做一个单点登录的项目,目前已经实现 在认证服务器通过认证以后,可以拿着token去资源服务器拿资源。

背景:

  • ResourceServer-8001 ---> 资源服务器
  • AuthenticationServer-8002 ---> 认证服务器
  • Client-8003 ---> 单点登录客户端

遇到的问题:

  • 如果访问客户端(8003),会被要求登录,然后跳转到认证服务器(8002)的登录页面,在登录成功后的重定向报错了(详情请看图)。

img

img

img

  • 我感觉认证服务器接管了客户端,但是有地方没配置好,导致重定向错误。

img

img

-
我要解决的问题

  • 如果客户端继续保持那些配置(即:继续声明这个模块是客户端),那么我遇到的这个问题有没有办法解决?

更新:

  • 按照 网友blkq 的方法去做,现在能成功重定向了!

img
https://www.programmergate.com/oauth2-redirect-uri-mismatch/#:~:text=When%20integrating%20OAuth2%20with%20Spring%20Boot%2C%20the%20default,we%20set%20a%20custom%20redirect%20URI%20as%20%E2%80%9Chttp%3A%2F%2Flocalhost%3A9090%2Fcallback%E2%80%9D.
你试试这个看

注册中心的 security 需要关闭csrf,这个有关掉吗

在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份认证的方法,当一个客户端向HTTP服务 器进行数据请求时,

如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。

客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码, 用户输入后,

客户端将用户名和密码中间用“:”分隔合并,并将合并后的字符串用BASE64编码,在每次请求数据 时,将密文附加于请求头(Request Header)Authorization: Basic XXXXXXX中。

HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64编码的用户名和密码),解开请求包,对用户名及密码进行验证,

如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

注册的跳转地址错了,oauth认证服务器上要注册跳转地址。
且注册的地址必须跟你登陆时要求的跳转地址保持一致。

你现在登陆之后想往localhost:8003/login跳转,这个最好改成localhost:8003/index。
用户肯定不希望登陆完毕又去登陆页面,至少希望去首页的。

然后在oauth服务器上,确认配置的跳转地址也是localhost:8003/index。

img

img

img

你先把你数据库里的www.baidu.com改成http:/localhost:8003/login执行一下,我看看spring的oauth2

cn.bing.com检索spring oauth2 client redirect url,很多解决这个问题的,你试试看哪个有效吧