Rest Spring Security OAuth2如何为文件下载生成临时令牌
在我的应用程序中,我使用的是Spring安全授权服务器和Spring安全资源服务器。一切正常,用户登录,获得颁发的访问令牌,并可以使用它访问API 现在我需要允许用户从URL下载一个文件(想想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,但这些
)
我的想法是创建一个新的端点,该端点将向用户发出一个临时访问令牌,然后用户可以将其添加为URLwindows.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;
}
}