温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java HTTP如何做鉴权

发布时间:2026-10-01 12:02:17 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Java 中进行 HTTP 鉴权(Authentication / Authorization),常见方式取决于你使用的是 客户端调用 HTTP 接口,还是 服务端接收并校验 HTTP 请求。下面按场景系统说明。


一、Java 作为 HTTP 客户端(调用别人接口)

1️⃣ Basic Auth(最基础)

String auth = "user:password";
String encoded = Base64.getEncoder()
        .encodeToString(auth.getBytes(StandardCharsets.UTF_8));

URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", "Basic " + encoded);

✅ 简单
❌ 明文(必须配合 HTTPS)


2️⃣ Bearer Token(JWT / OAuth2 最常见)

conn.setRequestProperty("Authorization", "Bearer " + token);

常用于:

  • JWT
  • OAuth2
  • Spring Security

3️⃣ 使用 HttpClient(Java 11+ 推荐)

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/data"))
        .header("Authorization", "Bearer " + token)
        .build();

HttpResponse<String> response =
        client.send(request, HttpResponse.BodyHandlers.ofString());

4️⃣ OAuth2 客户端(推荐用库)

  • Spring Security OAuth2 Client
  • OkHttp + Token 拦截器
  • Retrofit + Interceptor

示例(OkHttp 拦截器):

public class AuthInterceptor implements Interceptor {
    public Response intercept(Chain chain) throws IOException {
        Request req = chain.request()
            .newBuilder()
            .addHeader("Authorization", "Bearer " + getToken())
            .build();
        return chain.proceed(req);
    }
}

二、Java 作为 HTTP 服务端(校验鉴权)

1️⃣ Spring Boot 中最常见方式

✅ JWT 鉴权(推荐)

流程:

  1. 登录 → 返回 token
  2. 每次请求 → 携带 Authorization: Bearer xxx
  3. 过滤器校验 token

示例 Filter:

public class JwtFilter extends OncePerRequestFilter {
    protected void doFilterInternal(
            HttpServletRequest request,
            HttpServletResponse response,
            FilterChain chain) throws ServletException, IOException {

        String token = request.getHeader("Authorization");

        if (token == null || !token.startsWith("Bearer ")) {
            response.setStatus(401);
            return;
        }

        // 解析并校验 JWT
        chain.doFilter(request, response);
    }
}

2️⃣ Spring Security 配置(推荐)

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/login").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2ResourceServer(oauth -> oauth.jwt());
        return http.build();
    }
}

3️⃣ 自定义 Token 校验(轻量方案)

if (!"valid-token".equals(request.getHeader("X-API-Key"))) {
    response.setStatus(403);
    return;
}

适合:

  • 内部服务
  • 简单 API Key

三、常见鉴权方式对比

方式 场景 安全性
Basic Auth 内部/测试 ❌
API Key 服务间 ⚠️
JWT Web / App ✅
OAuth2 第三方授权 ✅✅
Session 传统 Web ✅

四、最佳实践建议

✅ 永远使用 HTTPS
✅ Token 设置过期时间
✅ 敏感信息不要放 URL
✅ 服务端校验必须严谨
✅ 使用成熟框架(Spring Security)


如果你愿意,可以告诉我:

  • 你是 客户端还是服务端
  • 用的 Spring Boot / 原生 Java / OkHttp / Retrofit
  • 想做 登录鉴权 / 接口保护 / 第三方接入

我可以直接给你 可运行的代码示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手