oauth2 spring-authorization-server自定义资源拥有者凭据许可模式

本文介绍了如何在spring-authorization-server 0.2.3-0.4.4和spring-boot 2.6.6环境下,应对oauth2标准不再支持的自定义资源拥有者模式。通过分析spring security的源码,特别是OAuth2AuthorizationServerConfigurer、OAuth2TokenEndpointConfigurer和OAuth2TokenEndpointFilter,设计并实现了自定义转换者和Provider。文中提供了详细的代码示例,包括初始化客户端模式、授权码模式、刷新Token模式和资源拥有者模式的提供者。
摘要由CSDN通过智能技术生成

1.版本

spring-security-oauth2-authorization-server 0.2.3-0.4.4

spring-boot 2.6.6

2.概述

spring-authorization-server中实现的oauth2标准中已经不支持自定义资源拥有者模式,但是项目从之前spring-seucirty-oauth2内置的升级到最新的授权服务器或者需要资源拥有者模式,就不要扩展

3.分析

官方源码的测试代码中给的示例初始化spring security的安全配置基本如下


protected void configure(HttpSecurity http) throws Exception {
    authorizationServerHttpSecurityConfigurer.configure(http);

   OAuth2AuthorizationServerConfigurer<HttpSecurity> authorizationServerConfigurer =
        new OAuth2AuthorizationServerConfigurer<>();

    RequestMatcher requestMatcher = new OrRequestMatcher(authorizationServerConfigurer.getEndpointsMatcher(),
            new AntPathRequestMatcher("/oauth2/consent"),
            loginRequestMatcher);

    http
            .requestMatcher(requestMatcher)
            .authorizeRequests(authorizeRequests ->
                    authorizeRequests.anyRequest().authenticated(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Boot 2.2版本中,引入了spring-boot-starter-oauth2-authorization-server模块,该模块提供了OAuth 2.0和OpenID Connect(OIDC)的授权服务器功能。在1.2版本中,新增了一些语法来自定义配置OIDC实例。 首先,你可以使用@Configuration注解创建一个配置类,并使用@EnableAuthorizationServer注解启用授权服务器功能。然后,你可以使用@Bean注解创建一个AuthorizationServerConfigurer实例,并重写configure方法来自定义配置。 下面是一个示例代码: ```java @Configuration @EnableAuthorizationServer public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Override public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { // 配置授权服务器的安全性 security.tokenKeyAccess("permitAll()") .checkTokenAccess("isAuthenticated()"); } @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { // 配置客户端信息 clients.inMemory() .withClient("client-id") .secret("client-secret") .authorizedGrantTypes("authorization_code", "refresh_token") .scopes("read", "write") .redirectUris("http://localhost:8080/callback"); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { // 配置授权服务器的端点 endpoints.authenticationManager(authenticationManager); } } ``` 在上面的示例中,我们通过重写configure方法来配置授权服务器的安全性、客户端信息和端点。你可以根据自己的需求进行相应的配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tof21

支持原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值