首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在spring + java中添加(覆盖) oAuth2访问令牌的过期时间

在Spring + Java中添加或覆盖OAuth2访问令牌的过期时间,可以通过定制TokenEnhancer来实现。TokenEnhancer是一个接口,用于对OAuth2访问令牌进行自定义增强处理。

下面是一种实现方法:

  1. 创建一个实现TokenEnhancer接口的类,例如CustomTokenEnhancer。在该类中重写enhance方法,对访问令牌进行增强处理。
代码语言:txt
复制
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import import org.springframework.security.oauth2.provider.token.TokenEnhancer;

public class CustomTokenEnhancer implements TokenEnhancer {
    
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        // 获取当前访问令牌的额外信息
        Map<String, Object> additionalInfo = new HashMap<>();
        additionalInfo.put("expiration", "自定义过期时间");

        // 设置增强后的访问令牌的额外信息
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);

        return accessToken;
    }
}
  1. 在Spring Security的配置类中,将CustomTokenEnhancer应用到认证服务器的TokenEnhancer链中。
代码语言:txt
复制
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore;

import javax.sql.DataSource;
import java.util.Arrays;

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private DataSource dataSource;
    
    @Autowired
    private AuthenticationManager authenticationManager;
    
    @Autowired
    private UserDetailsService userDetailsService;
    
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.jdbc(dataSource);
    }
    
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        // TokenEnhancer链
        TokenEnhancerChain enhancerChain = new TokenEnhancerChain();
        enhancerChain.setTokenEnhancers(Arrays.asList(new CustomTokenEnhancer()));

        endpoints.tokenStore(new JdbcTokenStore(dataSource))
                .tokenEnhancer(enhancerChain)
                .authenticationManager(authenticationManager)
                .userDetailsService(userDetailsService);
    }
}

通过以上步骤,您可以在Spring + Java中成功添加或覆盖OAuth2访问令牌的过期时间。在CustomTokenEnhancer中,您可以根据自己的业务逻辑,动态设置访问令牌的过期时间或其他额外信息。

注意:这里仅提供了一个示例实现,具体的实际业务逻辑可能会有所不同,您可以根据自己的需求进行适当调整和扩展。另外,还需确保正确配置数据库和其他相关的Spring Security和Spring OAuth2组件。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  • 腾讯云数据库(MySQL):https://cloud.tencent.com/product/cdb
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能平台(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网开发平台(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发平台(MPS):https://cloud.tencent.com/product/mps
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏服务引擎(GSE):https://cloud.tencent.com/product/gse

注意:以上链接仅供参考,具体产品的选择应根据实际需求和技术评估来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring底层原理高级进阶】【SpringCloud整合Spring Security OAuth2】深入了解 Spring Security OAuth2:底层解析+使用方法+实战

; } // 验证访问令牌示例代码 boolean validateAccessToken(String accessToken) { // 从数据库或缓存获取访问令牌过期时间...方法用于生成随机访问令牌,并设置其过期时间,然后将访问令牌保存到数据库或缓存。...boolean validateToken(String accessToken) { // 从数据库或缓存获取访问令牌过期时间 AccessToken storedToken =...客户端应采取适当安全措施,存储令牌时进行加密处理。 在Spring Cloud,可以使用Spring Security OAuth2来实现令牌保密性。...我们可以在相应配置类添加自定义配置,例如定义访问规则、认证管理器等。

1.9K11

学成在线-第16天-讲义- Spring Security Oauth2 JWT RSA加解密

Java中有很多用户认证框架都可以实现单点登录: 1、Apache Shiro. 2、CAS 3、Spring security CAS 2.2 Oauth2认证 2.2.1 Oauth2认证流程 ​...业界提供了OAUTH多种实现PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员时间,因而OAUTH是简易。...refresh_token:刷新令牌,使用此令牌可以延长访问令牌过期时间。 expires_in:过期时间,单位为秒。 scope:范围,与定义客户端范围一致。...3、客户端携带令牌访问资源服务 客户端在Http header 添加: Authorization:Bearer 令牌。...: 在http header添加 Authorization: Bearer 令牌 当输入错误令牌也无法正常访问资源。

11.9K10
  • JWT学习

    ) JJWT简介 快速入门 token创建 token验证解析 token过期校验 自定义claims Spring Security Oauth2 整合JWT 整合JWT 扩展JWT存储内容...Java解析JWT内容 刷新令牌 Spring Security Oauth2 整合单点登录(SSO) 创建客户端工程,添加依赖 修改配置文件 在启动类上添加@EnableOAuth2Sso注解来启用单点登录功能...网站通过微信、微博登录等,主要用于第三方登录。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者数据。...Spring Security Oauth2完整代码进行修改 添加配置文件JwtTokenStoreConfig.java /** * 使用Jwt存储token配置 * @author zhoubin...---- Java解析JWT内容 添加依赖 <!

    2.8K40

    微服务 day16:基于Spring Security Oauth2开发认证服务

    0x02 单点登录需求 本项目包括多个子项目,:学习系统,教学管理中心、系统管理中心等,为了提高用户体验性需要实现用户只认证一次便可以在多个拥有访问权限系统访问,这个功能叫做单点登录。...业界提供了 OAUTH 多种实现 PHP、JavaScript,Java,Ruby 等各种语言开发包,大大节约了程序员时间,因而 OAUTH 是简易。...0x03 Spring Security Oauth2 认证解决方案 本项目采用 Spring security + Oauth2 完成用户认证及用户授权,Spring security 是一个强大和高度可定制身份验证和访问控制框架...refresh_token:刷新令牌,使用此令牌可以延长访问令牌过期时间。 expires_in:过期时间,单位为秒。 scope:范围,与定义客户端范围一致。...3、客户端携带令牌访问资源服务客户端在 Http header 添加: Authorization:Bearer 令牌

    4.2K30

    Spring Boot 与 Spring Security 集成及 OAuth2 实现

    本文将详细介绍如何在 Spring Boot 中集成 Spring Security,并实现 OAuth2 授权。 1....使用 OAuth2 保护 API 为了保护我们 API,使其只能通过 OAuth2 授权访问,我们需要将应用配置为资源服务器。资源服务器负责保护资源( API),并验证访问令牌有效性。.../private/** 下资源则需要用户通过 OAuth2 登录并携带有效访问令牌才能访问。...前端集成与访问受保护资源 在前端应用使用 React 或 Angular),当用户通过 OAuth2 登录成功后,应用会获取到一个访问令牌。...我们从浏览器 localStorage 获取了访问令牌,并将其附加在请求头 Authorization 字段,以 Bearer 令牌格式发送给后端服务器。

    30710

    Django REST Framework-基于Oauth2身份验证(一)

    OAuth2是一种用于授权开放标准,它允许用户授权第三方应用程序访问其资源,而无需将其凭据提供给该应用程序。...OAuth2是一种广泛使用身份验证和授权协议,许多大型服务Google、Facebook和Twitter都使用了OAuth2。...本文将介绍如何在Django REST Framework中使用基于OAuth2身份验证,包括安装和配置django-oauth-toolkit,创建OAuth2客户端和授权服务器,以及使用OAuth2...SCOPES用于设置OAuth2范围,ACCESS_TOKEN_EXPIRE_SECONDS和REFRESH_TOKEN_EXPIRE_SECONDS用于设置访问令牌和刷新令牌过期时间,ROTATE_REFRESH_TOKEN...用于控制是否在使用新刷新令牌时将旧刷新令牌加入黑名单,ALLOWED_REDIRECT_URI_SCHEMES用于设置允许重定向URI方案。

    2.7K10

    SpringCloud-基于Oauth2SSO单点登录原理解析与实现

    单点登录(SSO)是一种身份验证过程,允许用户通过一次登录访问多个系统。本文将深入解析单点登录原理,并详细介绍如何在Spring Cloud环境实现单点登录。...>spring-boot-starter-oauth2-resource-server② 给每个服务添加配置在application.yml添加OAuth2...以下是单点登录调用代码详细步骤,包括获取授权码、请求访问令牌以及使用令牌访问受保护资源示例代码。① 获取授权码首先,客户端应用需要引导用户到SSO认证中心进行登录,并获取授权码。...,客户端应用可以使用这个令牌访问受保护资源。...在实际应用,开发者应根据具体需求和系统架构选择合适实现方案,并不断优化以提高系统性能和安全性。以下是一些关键点:技术选型:选择适合业务需求SSO实现方式,基于OAuth2、JWT或CAS等。

    1.6K35

    【我在拉勾训练营学技术】OAuth2+JWT 实现权限验证

    5、客户端携带有效令牌访问资源服务器 6、资源服务器从认证服务器验证有效令牌。...第三⽅授权登录场景:⽐,我们经常登录⼀些⽹站或者应⽤时候,可以选择使⽤第三⽅授权登录⽅式,⽐:微信授权登录、QQ授权登录、微博授权登录等,这是典型 OAuth2 使⽤场景。...Spring Cloud OAuth2 + JWT 实现 Spring Cloud OAuth2Spring Cloud 体系对OAuth2协议实现,可以⽤来做多个微服务统⼀认证(验证身份合法性...解决上边问题:令牌采⽤JWT格式即可解决上边问题,⽤户认证通过会得到⼀个JWT令牌,JWT令牌已经包括了⽤户相关信 息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定算法⾃⾏完成令牌校验...第⼆部分是负载,内容也是⼀个json对象,它是存放有效信息地⽅,它可以存放jwt提供现成字段,⽐ :iss(签发者),exp(过期时间戳), sub(⾯向⽤户)等,也可⾃定义字段。

    1.5K20

    面试官:说说SSO单点登录实现原理?

    应用系统将令牌存储在用户本地会话(浏览器 Cookie)。当用户访问其他需要 SSO 支持应用系统时,浏览器会携带令牌自动发送给目标系统。...在某些实现,当用户在一个子系统中注销时,会通知认证中心撤销所有关联令牌,从而实现全局注销,保证了其他系统也无法继续使用过期认证信息。...2.单点登录实现在 Java 项目中,实现单点登录(SSO)方案主要有以下几种:OAuth2 + JWT(JSON Web Tokens)方案:OAuth2 是一个开放标准,允许用户授权第三方应用访问他们在服务提供商处存储特定信息...你可以使用 Spring Session 来将会话信息存储在共享地方( Redis),然后在每个应用通过 Spring Session 来访问这些会话信息。...OAuth2 广泛应用于第三方应用需要访问用户存储在服务提供商( Google、Facebook)资源时,用户授权第三方应用访问其资源,而无需将用户名和密码直接提供给第三方应用。

    27210

    Spring Cloud Security配置JWT和OAuth2集成实现单点登录-示例

    使用OAuth2和JWT来实现单点登录。下面是一个简单示例:用户在我们应用程序中进行身份验证。应用程序将向外部OAuth2认证服务器发送请求,以获取访问令牌。...认证服务器将验证用户身份并返回访问令牌。应用程序将使用访问令牌向资源服务器发送请求。资源服务器将验证访问令牌,并返回受保护数据。这个示例展示了OAuth2和JWT如何协同工作来实现单点登录和授权。...演示如何使用Spring Cloud Security和Spring Cloud Gateway来实现基于JWT和OAuth2单点登录:创建一个授权服务器我们将使用Spring Security OAuth2...我们还设置了访问令牌过期时间为3600秒。...我们使用了oauth2ResourceServer().jwt()来配置JWT令牌验证,然后添加了一个JwtAuthenticationFilter,该过滤器用于解析JWT令牌并将其转换为Spring

    2.8K71

    Spring Cloud Security核心组件-Cloud OAuth2 Client

    它基于令牌安全性模型,该模型授予访问用户数据令牌,并且每次访问时都需要提供该令牌OAuth2协议定义了四种角色:资源拥有者(用户)、资源服务器、客户端和授权服务器。...其中,Cloud OAuth2 Client是Spring Cloud Security提供一种特殊实现,它可以轻松地与Spring Cloud其他组件集成。...在后续请求,Cloud OAuth2 Client将使用OAuth2ClientHttpRequestInterceptor来添加访问令牌到HTTP请求头中,以便访问受保护资源。...使用Cloud OAuth2 Client下面我们将介绍如何在Spring Boot应用程序中使用Cloud OAuth2 Client来保护受保护资源。...可以在应用程序配置文件添加以下配置:spring: security: oauth2: client: registration: google:

    1.2K40

    基于Spring Cloud Oauth2 JWT搭建微服务安全认证中心

    2.总的来说oauth2分为三个部分 配置资源服务 配置认证服务 配置spring security 我在前面已经讲过spring security文章, spring security oauth2...是建立在spring security基础之上,所以有一些体系是公用, 前两个是oauth2重点 3.OAuth 2.0运行流程如下图,摘自RFC 6749。...security oauth2认证思路 client模式,没有用户概念,直接与认证服务器交互,用配置客户端信息去申请accessToken,客户端有自己clientid,clientsecret...,否则SpringBoot会自动配置一个AuthenticationManager,覆盖掉内存用户 */ @Bean @Override public AuthenticationManager...看到成功返回token 在配置,我们已经配置了对order资源保护,如果直接访问: http://localhost:8080/order/1 ,会得到这样响应 ?

    15.6K73

    使用Spring Cloud Security OAuth2搭建授权服务

    Spring Cloud Security OAuth2SpringOAuth2 开源实现,优点是能与Spring Cloud技术栈无缝集成,如果全部使用默认配置,开发者只需要添加注解就能完成...4.1 相关接口 Spring Cloud Security OAuth2通过DefaultTokenServices类来完成token生成、过期OAuth2 标准规定业务逻辑,而DefaultTokenServices...注意看oauth_access_token表是存放访问令牌,但是并没有直接在字段存放token。...Spring 使用OAuth2AccessToken来抽象与令牌有关所有属性,在写入到数据库时,Spring将该对象通过JDK自带序列化机制序列成字节直接保存到了该表token字段。...也就是说,如果只看数据表你是看不出access_token值是多少,过期时间等信息。这就给资源服务器实现带来了麻烦。

    2.5K70

    Jhipster技术栈理解 - UAA原理分析

    c, 认证服务器确认无误后,向客户端提供访问令牌。 d, 客户端之后所有访问都会传递令牌。...b, 客户端将认证信息发给认证服务器,并请求返回一个访问令牌。 c, 认证服务器确认认证信息无误后,向客户端提供访问令牌。 d, 客户端之后所有访问不会传递这个令牌。...com.yourcompany.uaa.security.IatTokenEnhancer 添加iat到token,即token创建时间。...作为客户端与UAA服务器令牌终端通信,实现了addAuthentication()方法,从配置文件获取如下配置,并放到请求头中: oauth2: web-client-configuration...“记住我”,cookie里面的刷新令牌key为: refresh_token 如果要严格判断登出时间,需要通过缓存中间件保存logout登出信息。

    2K30

    可能是第二好 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~

    响应字段 token_type 为令牌类型,一般是 bearer 或是 mac 类型。 响应字段 expires_in 为访问令牌过期时间,单位为秒。 响应字段 scope 为权限范围。...: 访问令牌(Access Token) 刷新令牌(Refresh Token) 在访问令牌过期时,我们可以使用刷新令牌向授权服务器获取一个新访问令牌。...可能会胖友有疑惑,为什么会有刷新令牌呢?每次请求资源服务器时,都会在请求上带上访问令牌,这样它泄露风险是相对高。 因此,出于安全性考虑,访问令牌过期时间比较短,刷新令牌过期时间比较长。...这样,如果访问令牌即使被盗用走,那么在一定时间后,访问令牌也能在较短时间过期。当然,安全也是相对,如果使用刷新令牌后,获取到新访问令牌访问令牌后续又可能被盗用。...在 Spring Security OAuth2 ,并没有提供内置接口,所以需要自己去实现。

    2.1K30

    Spring Cloud Security:Oauth2结合JWT使用

    Spring Cloud Security 为构建安全SpringBoot应用提供了一系列解决方案,结合Oauth2还可以实现更多功能,比如使用JWT令牌存储信息,刷新令牌功能,本文将对其结合JWT使用进行详细介绍...} payload中用于存放数据,比如过期时间、用户名、用户所拥有的权限等; { "exp": 1572682831, "user_name": "macro", "authorities...oauth2存储令牌方式 在上一节我们都是把令牌存储在内存,这样如果部署多个服务,就会导致无法使用令牌问题。...>spring-boot-starter-data-redis 在application.yml添加redis相关配置: spring: redis...刷新令牌Spring Cloud Security 中使用oauth2时,如果令牌失效了,可以使用刷新令牌通过refresh_token授权模式再次获取access_token。

    3.4K31

    Spring Cloud Security核心组件-OAuth2

    OAuth2 ,涉及到角色有四个:资源所有者(Resource Owner):拥有被保护资源,可以授权第三方应用程序访问该资源。...OAuth2 涉及到基本概念如下:授权码(Authorization Code):客户端向授权服务器发送授权请求,授权服务器返回授权码。...二、OAuth2 核心组件在 Spring Cloud Security OAuth2 核心组件有以下几个:Spring Security OAuth2Spring Security OAuth2...ResourceServerConfigurer:用于配置资源服务器访问规则,包括访问令牌校验规则等。三、OAuth2 工作流程OAuth2 工作流程如下:客户端向授权服务器发送授权请求。...客户端使用访问令牌向资源服务器请求受保护资源。资源服务器验证访问令牌有效性,并向客户端返回受保护资源。当访问令牌过期时,客户端可以使用刷新令牌向授权服务器请求新访问令牌

    71550

    Spring Security 系列(2) —— Spring Security OAuth2

    Spring Security OAuth2.0 OAuth2 介绍 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密资源(照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用...与授权代码授予类型不同,在授权代码授予类型,客户端对授权令牌访问令牌发出单独请求,客户端接收访问令牌作为授权请求结果。...刷新令牌由授权服务器颁发给客户端,用于在当前访问令牌无效或过期时获取新访问令牌,或者获取具有相同或更窄范围其他访问令牌访问令牌生存期可能比资源所有者授权权限短,权限更少)。...如果客户端知道访问令牌过期,它将跳到步骤 (G);否则,它会发出另一个受保护资源请求。 (F) 由于访问令牌无效,资源服务器将返回无效令牌错误。...生效 } Spring Security OAuth2 客户端 Spring Security OAuth2 客户端是用于代理我们对所谓 OAuth2 授权服务器进行访问工具。

    6K20
    领券