Rest Spring Security OAuth2如何为文件下载生成临时令牌

Rest Spring Security OAuth2如何为文件下载生成临时令牌,rest,oauth-2.0,spring-security-oauth2,spring-security-rest,Rest,Oauth 2.0,Spring Security Oauth2,Spring Security Rest,在我的应用程序中,我使用的是Spring安全授权服务器和Spring安全资源服务器。一切正常,用户登录,获得颁发的访问令牌,并可以使用它访问API 现在我需要允许用户从URL下载一个文件(想想) 我的想法是创建一个新的端点,该端点将向用户发出一个临时访问令牌,然后用户可以将其添加为URLwindows.open('/files/1/download?access\u token=') 我已尝试使用TokenEndpoint和AuthorizationServerTokenServices,但这些

在我的应用程序中,我使用的是Spring安全授权服务器和Spring安全资源服务器。一切正常,用户登录,获得颁发的访问令牌,并可以使用它访问API

现在我需要允许用户从URL下载一个文件(想想

我的想法是创建一个新的端点,该端点将向用户发出一个临时访问令牌,然后用户可以将其添加为URL
windows.open('/files/1/download?access\u token=')

我已尝试使用
TokenEndpoint
AuthorizationServerTokenServices
,但这些将不允许我控制新令牌的参数


生成令牌的正确方法是什么?

创建一个创建和验证JWT的服务怎么样

@Service
public class TokenProvider {

    public String createToken(User user) {

        Date now = new Date();
        Date expiryDate = new Date(now.getTime() + 5000); // Token will expire in 5 seconds

        return Jwts.builder()
                .setSubject(Long.toString(user.getId()))
                .setIssuedAt(new Date())
                .setExpiration(expiryDate)
                .signWith(SignatureAlgorithm.HS512, "YOUR-SECRET-KEY")
                .compact();
    }
    
    public Long getUserIdFromToken(String token) {
        Claims claims = Jwts.parser()
                .setSigningKey("YOUR-SECRET-KEY")
                .parseClaimsJws(token)
                .getBody();

        return Long.parseLong(claims.getSubject());
    }
    
    public boolean validateToken(String authToken) {
        try {
            Jwts.parser().setSigningKey("YOUR-SECRET-KEY").parseClaimsJws(authToken);
            return true;
        } catch (SignatureException ex) {
            logger.error("Invalid JWT signature");
        } catch (MalformedJwtException ex) {
            logger.error("Invalid JWT token");
        } catch (ExpiredJwtException ex) {
            logger.error("Expired JWT token");
        } catch (UnsupportedJwtException ex) {
            logger.error("Unsupported JWT token");
        } catch (IllegalArgumentException ex) {
            logger.error("JWT claims string is empty.");
        }
        return false;
    }
}