使用 oauth2-client 作为隐式授权类型时解决 [authorization_request_not_found]

ash*_*evo 6 spring spring-security spring-oauth2

我收到 OAuth2AuthorizationException:[authorization_request_not_found]

当尝试将授权授予类型从授权代码替换为隐式时

 spring:
    security:
      oauth2:
        client:
          registration:
            mobile:
              provider: auth
              client-id: revo
              authorization-grant-type: implicit
              redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
              scope: read
Run Code Online (Sandbox Code Playgroud)

结果将我重定向到 /login/oauth2/code/mobile#access_token={++++}&token_type=bearer&state={++++}&expires_in={++++}

但它是 Whitelabel 错误页面 在此输入图像描述 我可以解决这个 Whitelabel 错误页面吗

Tii*_*ina 2

根据源码分析,authorization_request_not_found可能是以下原因造成的:

  • 注册不存在(当身份验证服务器响应奇怪的注册时)
  • 状态不存在(身份验证服务器响应奇怪的状态)

以上内容应保留在ClientRegistrationRepository. 检查客户端和身份验证服务器配置后,第三种可能性是服务器和客户端使用相同的{baseUrl}localhost 或相同的 ip,即使它们位于不同的端口。然后您可以更改其中之一以使用本地配置的域名(例如/etc/host)。这是因为当客户端和服务器都使用相同的域名时,它们会删除对方刚刚在 cookie 中设置的会话 ID。