赞
踩
公司项目使用xml配置的方式整合oauth2,在阅读源码,跟踪整个授权跟获取令牌的过程中,对比xml的配置文件,并没有找到有配置配了两个endpoint的注入:TokenEndpoint 和 AuthorizationEndpoint。这两个类分别对应我们oauth2中两个重要的请求:/oauth/token 和 /oauth/authorize。我们oauth的功能都围绕着这个给url展开,这里不禁疑惑,配置文件没有注入这两个bean,那请求是如何映射到这两个bean的呢?
拿其中一个来说:TokenEndpoint。如下图,TokenEndpoint 类上有一个注解 @FrameworkEndpoint,我们姑且把它当作@controller ,可以使用相关的注解,这里,获取令牌入口 /oauth/token 就是在这个类配置的。这里就解决的请求映射到bean的问题。
但是还有一个问题,仔细看它的父类(下图),并没有类似@autowire 的注入图中的红框部分,那么红框中的几个bean是怎么注入进去的呢?
这里就比较隐秘了,是在AuthorizationServerBeanDefinitionParser解析配置文件 oauth2:authorization-server 标签时,设置需要注入的属性,然后让spring来注入。如下图:
以上是使用xml配置的方式,比较难跟踪,如果使用java配置,比如spring boot的时候,是在配置类AuthorizationServerEndpointsConfiguration中初始化的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。