spring security oauth2 中两个endpoint的注入来源

公司项目使用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中初始化的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 设置 OAuth2 token endpoint 需要进行以下步骤: 1. 首先,确保你已经添加了 Spring Security OAuth2 的依赖。可以在 `pom.xml` 文件添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency> ``` 2. 在 Spring Security 的配置类,添加 `@EnableOAuth2Client` 注解以启用 OAuth2 客户端功能。例如: ```java @Configuration @EnableWebSecurity @EnableOAuth2Client public class SecurityConfig extends WebSecurityConfigurerAdapter { // 配置其他的安全设置 } ``` 3. 在 `application.properties`(或 `application.yml`)文件,配置 OAuth2 的相关属性。例如: ```properties spring.security.oauth2.client.registration.google.client-id=YOUR_CLIENT_ID spring.security.oauth2.client.registration.google.client-secret=YOUR_CLIENT_SECRET spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/v2/auth spring.security.oauth2.client.provider.google.token-uri=https://www.googleapis.com/oauth2/v4/token spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo spring.security.oauth2.client.provider.google.user-name-attribute=name ``` 注意:上述示例的属性是以 Google OAuth2 作为示例,你需要将其替换为你使用的实际 OAuth2 提供商的属性。 4. 最后,你可以使用 `SecurityConfig` 类的 `configure(HttpSecurity http)` 方法来配置 Spring Security 的其他安全设置。例如: ```java @Configuration @EnableWebSecurity @EnableOAuth2Client public class SecurityConfig extends WebSecurityConfigurerAdapter { // 配置其他的安全设置 @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/oauth2/**", "/login/**").permitAll() .anyRequest().authenticated() .and() .oauth2Login() .loginPage("/login") .defaultSuccessUrl("/home") .and() .logout() .logoutUrl("/logout") .logoutSuccessUrl("/") .permitAll(); } } ``` 以上示例,`configure(HttpSecurity http)` 方法配置了登录页、登录成功后的默认跳转页面和注销功能。 这是一个简单的设置 OAuth2 token endpoint 的示例,你可以根据自己的需求进行更详细的配置和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值