小工具知识网

当前位置: 首页 > 行业知识 > Spring Security的API Key实现SpringBoot 接口安全

行业知识

Spring Security的API Key实现SpringBoot 接口安全

2026-11-07 16:43:09 来源:互联网转载

Spring Security的API Key实现SpringBoot 接口安全

Spring Security ���供了各种机制来保护我们的 REST API。其中之一是 API 密钥。API 密钥是客户端在调用 API 调用时提供的令牌。

在本教程中,我们将讨论如何在Spring Security中实现基于API密钥的身份验证。

API Keys

一些REST API使用API密钥进行身份验证。API密钥是一个标记,用于向API客户端标识API,而无需引用实际用户。标记可以作为查询字符串或在请求头中发送。

一 添加依赖

    org.springframework.boot    spring-boot-starter-security

二 验证请求头的API KEY

public class AuthenticationService {    private static final String AUTH_TOKEN_HEADER_NAME = "X-API-KEY";    private static final String AUTH_TOKEN = "Baeldung";    public static Authentication getAuthentication(HttpServletRequest request) {        String apiKey = request.getHeader(AUTH_TOKEN_HEADER_NAME);        if ((apiKey == null) || !apiKey.equals(AUTH_TOKEN)) {            throw new BadCredentialsException("Invalid API Key");        }        return new ApiKeyAuthentication(apiKey, AuthorityUtils.NO_AUTHORITIES);    }}

在这里,我们检查请求头是否包含 API Key,如果为空 或者Key值不等于密钥,那么就抛出一个 BadCredentialsException。如果请求头包含 API Key,并且验证通过,则将密钥添加到安全上下文中,然后调用下一个安全过滤器。getAuthentication 方法非常简单,我们只是比较 API Key 头部和密钥是否相等。

为了构建 Authentication 对象,我们必须使用 Spring Security 为了标准身份验证而构建对象时使用的相同方法。所以,需要扩展 AbstractAuthenticationToken 类并手动触发身份验证。

三 扩展AbstractAuthenticationToken

为了成功地实现我们应用的身份验证功能,我们需要将传入的API Key转换为AbstractAuthenticationToken类型的身份验证对象。AbstractAuthenticationToken类实现了Authentication接口,表示一个认证请求的主体和认证信息。

public class ApiKeyAuthentication extends AbstractAuthenticationToken {    private final String apiKey;    public ApiKeyAuthentication(String apiKey,        Collection

上一篇:怎么降低外云服务器延迟?

下一篇:小孩英语怎么读语音?