当前位置: 首页 > 知识库问答 >
问题:

放心承载认证

连志义
2023-03-14

我对使用Rest-Assured、Java和Api测试还不熟悉,所以请对我温柔一点。当我使用rest-assured测试一个使用承载身份验证的api时,测试失败,导致:-java。网ConnectException:连接被拒绝:连接

我知道这个问题可能与身份验证有关,但我不确定如何使用“Bearer”。我四处搜索,认为我需要用我的用户名和密码提出一个初始请求。然后获取一个令牌,用于承载身份验证。请有人能帮我举一个简单的例子吗?

我的代码是

import com.jayway.restassured.RestAssured;
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.hasItem;

@BeforeTest
    public void setUp() {
        RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
        RestAssured.authentication =   preemptive().basic("username","password");

}

@Test
public void successfulTest() {
    given()
            .contentType("application/json; charset=UTF-8");

    when().

            get("http://mydomain/testpath/Id=2").
    then().
            statusCode(200);

}

共有3个答案

宗政子辰
2023-03-14

我的Cucumber步骤定义如下所示:

    // Class variables
    private String token_resource = "/yourApp/oauth/token?username=";
    private String endpoint_rest="https://your.app.domain.com/";
    private String acessToken;

    @When("^user gets access token using userId \"(.+)\" and password \"(.+)\"$")
public void getAccessToken(String userName, String password){
    RequestSpecification requestSpec = RestAssured.with();
    requestSpec.given().contentType("application/json");
    requestSpec.headers("Authorization", "Basic  your-string-here");
    Response response = requestSpec.post(endpoint_rest + token_resource + userName + "&password=" + password + "&client_id=yourApp&grant_type=password");
    String responseMsg = response.asString();
    System.out.println(">> responseMsg=" + responseMsg);
    assertTrue("Missing access token",responseMsg.contains("access_token"));
    System.out.println(">> Get Access token RESPONSE: " + responseMsg);

    DocumentContext doc = JsonPath.parse(responseMsg);
    acessToken= doc.read("access_token");

    System.out.println(" >> doc.read access_token= " + acessToken);  
}

这在很大程度上取决于endpoint的编码方式。

当我想学习这类东西时,我会去“放心”的例子和搜索。

比如这里。

韩夕
2023-03-14

为了获得承载令牌,您可以使用此代码授权您的请求:

PreemptiveBasicAuthScheme authScheme = new PreemptiveBasicAuthScheme();
authScheme.setUserName("login");
authScheme.setPassword("password");
RestAssured.authentication = authScheme;

在您获得令牌后,通过以下方式将其发送到您的请求中:

response = given().auth().oauth2(token).get("http://mydomain/testpath/Id=2");
李鸿
2023-03-14
Response response =
      given()
          .headers(
              "Authorization",
              "Bearer " + bearerToken,
              "Content-Type",
              ContentType.JSON,
              "Accept",
              ContentType.JSON)
          .when()
          .get(url)
          .then()
          .contentType(ContentType.JSON)
          .extract()
          .response();
 类似资料:
  • 我目前正在使用Postman来生成承载令牌,我正在自动化测试中使用它。现在,我也想使用Java中的REST Assured来自动化承载令牌生成过程。请帮帮我.谢了。

  • 当一个人试图使用azure AD承载令牌访问我们的系统时,这个获取和缓存资源令牌的工作流程是不存在的。 所以我的问题是,我如何使用承载令牌来启用它?如何才能像使用OpenIDConnect一样请求额外的资源令牌?是否可以使用ADAL从承载令牌获取授权代码?

  • 带有Authorization头的请求似乎没有到达Spring Security,因为这个头现在是不允许的。 目前,我扩展WebSecurityConfigurerAdapter以允许所有选项请求。 编辑:问题:如何将Spring Security配置为不需要对选项请求进行身份验证? null

  • 问题内容: 我正在.NET Web应用程序中实现Web API 2服务体系结构。使用请求的客户端是纯JavaScript,没有mvc / asp.net。我正在使用OWIN根据本文尝试启用令牌身份验证,并使用Web API Sample进行OWIN承载令牌身份验证 。授权后,我似乎在身份验证步骤中缺少某些内容。 我的登录名如下: 它返回 然后,我尝试在AngularJS中的其他请求上设置HTTP标

  • 我使用放心框架的Apigee代理URL与生成承载令牌在飞行,Xapi密钥和使用Apigee代理URL。目前,令牌是使用CURL命令手动生成的。我在邮递员方面可以考得很好。//accessToken,下面的apiKey定义为字符串//inputrequest.getInputStream()读取body所需的JSON 我得到的是401(未经授权的错误),而不是200。我在这里的问题总结一下-- Re

  • 我有几个azure函数,我想设置一个基于令牌的身份验证(使用承载令牌)。我想确保没有在HTTP头中传递承载令牌的用户不能访问azure函数。我正在使用可视代码/蔚蓝云。如有任何帮助或指导,将不胜感激。我有一种方法可以使用客户端id、secret和租户id来获得承载令牌,但是如何使其成为azure函数的必填字段呢?