放心的基本身份验证问题

时间:2018-07-06 16:05:49

标签: rest-assured

当我将Postman与Basic Auth一起使用时,我的端点工作得很好。但是,当我在“有保证的放心”中尝试它返回401时。我在保证放心的情况下尝试了两种不同的身份验证方法,到目前为止,它们都对我没有用。需要帮助!

    RequestSpecification requestSpec;
    String baseURI = "http://qa3-phoenix.labcorp.com";
    String basePath = "/phx-rest/healthcheck/ping";
    RestAssured.useRelaxedHTTPSValidation();
    RestAssured.baseURI = baseURI;
    requestSpec = new RequestSpecBuilder()
                .setContentType(ContentType.JSON)
                .build();

        Response response = RestAssured
                .given()
                    .spec(requestSpec)
                    .auth().basic("username","password")
                .when()
                    .get(basePath)
                .then()
                    .extract().response();

2 个答案:

答案 0 :(得分:0)

useRelaxedHTTPSValidation()是一种变通方法,当服务器未使用有效证书或您碰到SSLPeerUnverifiedException时。在大多数情况下,这不会发生。

因此,请尝试删除useRelaxedHTTPSValidation()

您还可以尝试以下方法吗?

在创建RequestSpecification时,可以将身份验证方案的对象添加到RequestSpecification中,然后使用该对象来创建http请求。

    RequestSpecBuilder req = new RequestSpecBuilder();
    PreemptiveBasicAuthScheme auth = new PreemptiveBasicAuthScheme();
    auth.setUserName("");
    auth.setPassword("");
    req.setAuth(auth); 
    req.build();

也许您可以考虑从单独的类或包中创建RequestSpec,以便更好地重用。

让我知道这是否有帮助,或者让我了解一下堆栈跟踪。

答案 1 :(得分:0)

一个人可以直接使用带有base64编码的用户名和密码的Authorization标头,并省略auth()部分。

代码示例:

String authBasic = Base64.encode(String.format("%s:%s", username, password));
rest()
    .header("Authorization", String.format("Basic %s", authBasic))