人生有两个悲剧:第一是想得到的得不到,第二是想得到的得到了
其实token的出现是为了解决sessionId存放的问题
sessionId 在分布式系统, 如果你存放在一台机器, 让一台机器服务负责session相关的存放, 存放单点故障的风险, 这是有状态的, 那么如果用token进行改进的话, 就可以做到无状态了, 但是呢?
给了一个token, 可是服务器怎么认这个token是我颁发给服务器的呢?
在安全认证领域, 登录之后通常会给一个token, 方便浏览器记住用户, 数字签名 token, 服务器是怎么认出是他授予的签名, 我介绍一下服务器是如何认出token和jwt是他授予的签名的
在安全认证领域,Token(令牌)是一种常用的认证机制。通常,在用户登录成功后,服务器会生成一个Token并返回给浏览器。浏览器将此Token存储在本地,并在后续请求中将其附加到请求头中。服务器收到请求后,会验证Token的有效性并据此确定用户身份。JSON Web Token(JWT)是一种常用的Token格式。
服务器如何认出Token和JWT是其授予的签名:
-
生成Token时,服务器会使用密钥(例如:对称密钥或非对称密钥对)对Token进行加密或签名。在JWT中,这一过程通常使用HS256、RS256等加密算法完成。
-
服务器将生成的Token发送给浏览器。浏览器在后续请求中将Token附加到请求头中。通常,这是通过"Authorization"请求头实现的,格式为 “Bearer ”。
-
当服务器收到带有Token的请求时,它会对Token进行验证。这一过程包括解密(对称密钥)或验证签名(非对称密钥对),并检查Token中的有效期、颁发者等信息。
-
如果验证成功,服务器会根据Token中的载荷(Payload)识别出用户身份,并处理相应的请求。否则,服务器将拒绝该请求,可能返回401未授权或403禁止访问等状态码。
在Java中,我们可以使用诸如"java-jwt"、"jjwt"等库来处理JWT。以下是一个简单的示例,展示了如何使用"java-jwt"库生成和验证JWT:文章来源:https://www.toymoban.com/news/detail-405993.html
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
public class JwtDemo {
private static final String SECRET_KEY = "my-secret-key";
public static void main(String[] args) {
// 生成JWT
String token = generateJwt("user-id-123");
// 验证JWT
try {
DecodedJWT decodedJwt = verifyJwt(token);
System.out.println("User ID: " + decodedJwt.getClaim("userId").asString());
} catch (JWTVerificationException e) {
System.out.println("Invalid JWT!");
}
}
private static String generateJwt(String userId) {
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
return JWT.create()
.withIssuer("auth0")
.withClaim("userId", userId)
.sign(algorithm);
}
private static DecodedJWT verifyJwt(String token) throws JWTVerificationException {
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
return JWT.require(algorithm)
.withIssuer("auth0")
.build()
.verify(token);
}
}
在这个例子中,我们使用HMAC256算法和一个对称密钥生成和验证JWT。当然,实际应用中可以根据需求选择其他算法和密钥类型。总之,服务器通过对Token进行解密或验证签名来识别出Token文章来源地址https://www.toymoban.com/news/detail-405993.html
到了这里,关于服务器: 这个 token 是我的吗? 我不信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!