zoukankan      html  css  js  c++  java
  • Spring Security Oauth2 使用 token 访问资源服务器出现异常:Invalid token does not contain resource id (oauth2)

    异常如图

    查看资源服务器的日志

    p.a.OAuth2AuthenticationProcessingFilter : Authentication request failed: error="access_denied", error_description="Invalid token does not contain resource id (oauth2)"
    

    从上面的日志可以看出,异常日志输出的 class 是 OAuth2AuthenticationProcessingFilter 这个过滤器

    对 OAuth2AuthenticationProcessingFilter 过滤器进行 debug 调试

    可以看到上图中,断点已经进入到了 doFilter 过滤器的过滤和放行的方法中

    继续打断点,发现这个方法里面在使用认证管理器的认证时,抛出了异常

    再进行一次 debug 访问,我们看一下这个方法内部是怎么操作的,可以看到这个 AuthenticationManager 是一个接口,而对于的在这个地方调用 authenticate 的实现类是:OAuth2AuthenticationManager

    进入这个方法以后,一直往下走,发现资源服务器对我们传入的 token 与授权服务器进行了一次远程认证,认证完以后,这个 token 是存在的,然后在这里他获取了一下访问授权服务器的资源服务器 id,而在这里出现了问题,当前资源服务器的 resourceId 为 oauth2,从授权服务器那边获取到的 resourceId 则是 resource,这样就可以知道,在我们资源服务器端是没有问题的,去查找一下授权服务器的问题

    可以在授权服务器上面看到,咱们配置的资源服务器 id,均是配置在数据库的

    查询一下数据库以后,发现 resourceId 的配置与资源服务器上面的不符,这样就导致了刚才的错误

    解决方法,修改 resouce_ids 与资源服务器上面配置一致即可

  • 相关阅读:
    原生JS发送Ajax请求、JSONP
    python Flask中html模版中如何引用css,js等资源
    python 单例与数据库连接池 及相关选择
    费曼致学生真野光一
    Winform判断EventHandler是否已经添加
    The list of pre-build cross-compiler
    Extended VM Disk In VirtualBox or VMware (虚拟机磁盘扩容)
    一张图了解SSH端口转发
    显卡驱动卸载清理工具
    Oracle分析函数
  • 原文地址:https://www.cnblogs.com/gaofangye/p/12590500.html
Copyright © 2011-2022 走看看