Rest Assured中Authorization Token验证失败问题求助
我在使用Rest Assured调用API时已添加Authorization Token,但仍收到认证失败提示,且该Token在Postman中可正常使用。
代码示例
package com.automation.tests; import static io.restassured.RestAssured.*; import org.json.JSONObject; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; public class AspenTest { public static void main(String[] args) { JSONObject churnUsageBody = new JSONObject(); churnUsageBody.put("customer_id", "c096"); RequestSpecification sp = given().baseUri("http://192.168.180.12:4000/") .header("Content-Type", "application/json") .header("X-CSRFToken", "EZpbczzL5yiBHKT0fn2PcfPszp0IfHwPLn3pmXJYA8BX8bH6Gn6ILrlAJPSuX1uq") .header("Authorization", "Token d2618176b9b9aed6dc0a9cb3a1ebfe1c4c8831ed999bdce4432e061aa56f672f") .body(churnUsageBody.toString()); Response rs = sp.post("churn/app/usgscore"); System.out.println(rs.asPrettyString()); } }
返回错误信息
{ "detail": "Authentication credentials were not provided." }
排查建议
- 校验Authorization头格式:确认「Token」与后续令牌字符串之间只有一个空格,无多余空格或缺失。
- 对比Postman请求头:在Postman中开启请求日志,导出完整请求头,与Rest Assured代码中的头信息逐一比对,注意Header名称的大小写(部分服务对大小写敏感)。
- 使用Rest Assured专属Auth方法:替换手动添加Header的方式,尝试用框架提供的认证方法:
或者明确拼接Token:.auth().oauth2("d2618176b9b9aed6dc0a9cb3a1ebfe1c4c8831ed999bdce4432e061aa56f672f").header("Authorization", "Token " + "d2618176b9b9aed6dc0a9cb3a1ebfe1c4c8831ed999bdce4432e061aa56f672f") - 关闭自动重定向:部分API会触发重定向,导致请求头丢失,可尝试禁用自动跟随重定向:
.redirects().follow(false) - 打印完整请求日志:在代码中添加日志打印,确认实际发送的请求头是否与预期一致:
RequestSpecification sp = given().baseUri("http://192.168.180.12:4000/") .header("Content-Type", "application/json") .header("X-CSRFToken", "EZpbczzL5yiBHKT0fn2PcfPszp0IfHwPLn3pmXJYA8BX8bH6Gn6ILrlAJPSuX1uq") .header("Authorization", "Token d2618176b9b9aed6dc0a9cb3a1ebfe1c4c8831ed999bdce4432e061aa56f672f") .body(churnUsageBody.toString()) .log().all();
内容的提问来源于stack exchange,提问作者Yogesh
相关产品推荐
相关产品推荐

