Bearer Auth(持票人认证)是一种HTTP认证机制,通常用于保护API和Web服务。它使用“持票人令牌”(Bearer Token)来验证客户端请求的合法性。持票人令牌通常是一个加密的字符串,客户端在请求头中携带这个令牌,服务器通过验证令牌来确定请求的合法性。
工作原理客户端获取令牌:客户端首先通过某种方式(例如用户登录)从认证服务器获取一个Bearer Token。这个令牌通常是通过OAuth 2.0或其他认证协议生成的。客户端发送请求:客户端在后续的API请求中,将Bearer Token添加到HTTP头部的Authorization字段中。服务器验证令牌:服务器接收到请求后,从HTTP头部中提取Bearer Token,并验证其合法性。如果令牌有效,服务器将允许请求继续处理,否则返回401 Unauthorized状态码。请求示例假设客户端已经获取到了一个令牌eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9,客户端可以这样发送请求:
GET /protected/resource HTTP/1.1 Host: api.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9服务器端验证示例(Java)
以下是一个简单的Java示例,展示如何在服务器端验证Bearer Token:
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class BearerTokenFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化代码
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String authHeader = httpRequest.getHeader("Authorization");
if (authHeader != null && authHeader.startsWith("Bearer ")) {
String token = authHeader.substring(7); // 提取令牌
// 验证令牌
if (validateToken(token)) {
chain.doFilter(request, response); // 令牌有效,继续处理请求
return;
}
}
// 令牌无效,返回401 Unauthorized
httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
@Override
public void destroy() {
// 销毁代码
}
private boolean validateToken(String token) {
// 令牌验证逻辑(例如检查签名、过期时间等)
// 这里假设令牌总是有效的
return true;
}
} 特点和优点简单性:Bearer Token是一个简单的字符串,易于生成和使用。无状态:服务器不需要存储任何会话信息,每个请求都携带完整的认证信息。安全性:通过使用加密和签名技术,Bearer Token可以防止篡改和伪造。灵活性:Bearer Token可以在多种场景下使用,包括API、Web服务和移动应用。安全注意事项HTTPS:始终通过HTTPS传输Bearer Token,以防止中间人攻击。令牌过期:令牌应设置合理的过期时间,防止长期有效的令牌被滥用。令牌撤销:提供撤销令牌的机制,以便在令牌泄露时可以立即失效。Bearer Auth是一种广泛使用的认证方式,特别适合于保护API和Web服务,提供了简单而安全的认证机制。
网友回复


