当前位置:   article > 正文

oauth2 提供的接口/oauth/token,第一个参数是接口Principal,参数的实际类型是UsernamePasswordAuthenticationToken_oauth2 principal

oauth2 principal

最近在看oauth的源码 ,发现 TokenEndpoint 这个类里面,/oauth/token 这个接口的第一个请求参数是接口Principal类型,实际上传过来的是UsernamePasswordAuthenticationToken类型,UsernamePasswordAuthenticationToken实现了Principal接口。

那么框架是在哪将请求参数封装成UsernamePasswordAuthenticationToken的呢?

如下图,首先打个断点,在方法调用栈里面,查看哪里给这个方法设置参数了。

一步步跟踪,会发现是在 InvocableHandlerMethod 的 invokeForRequest 方法里,通过反射调用,如下图:

接下来只需要看 getMethodArgumentValues 这个方法做了什么就知道了。跟着图片一步步往下走,

ServletRequestMethodArgumentResolver.resolveArgument(...):

SecurityContextHolderAwareRequestWrapper.getUserPrincipal()

最后可以发现,是secutity 框架本身的 SecurityContextHolderAwareRequestWrapper 实例化参数Principal的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/481560
推荐阅读
相关标签
  

闽ICP备14008679号