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

Posted

技术标签:

【中文标题】使用 oauth2-client 作为隐式授权类型时解决 [authorization_request_not_found]【英文标题】:resolve [authorization_request_not_found] when using oauth2-client as implicit grant-type 【发布时间】:2019-12-28 20:35:06 【问题描述】:

我得到 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

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

但它是白标签错误页面 我可以解决这个 Whitelabel 错误页面吗

【问题讨论】:

你有 WebSecurityConfigurerAdapter 吗? 我正在使用来自 spring webflux 的 ServerHttpSecurity 【参考方案1】:

根据源代码,authorization_request_not_found 可能是由以下原因引起的:

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

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

【讨论】:

以上是关于使用 oauth2-client 作为隐式授权类型时解决 [authorization_request_not_found]的主要内容,如果未能解决你的问题,请参考以下文章

OAuth 2 中隐式授权类型的目的是啥?

Laravel Passport APi - 隐式授权

Oauth 2.0 隐式授权有多安全?

如何获取不和谐 oauth2 隐式授权的范围值?

无法找到延迟格式化的递归 JSON 类型作为隐式值

#yyds干货盘点# springboot整合Oauth2,GateWay实现网关登录授权验证