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服务,提供了简单而安全的认证机制。
网友回复