Java 重新发行的不记名代币

Java 重新发行的不记名代币,java,oauth,rest-assured,Java,Oauth,Rest Assured,一般来说,重新授权和身份验证非常新 我有一个API,我可以通过客户端凭据向邮递员发出get请求。它返回一个不记名令牌 我现在正试着用cucumber和Restarsed解决这个问题 所以我们有这段代码,它试图为下一步(API调用)获取承载令牌 @Given("^the user has a valid authentication token for credentials$") public void the_user_with_credentials_something_

一般来说,重新授权和身份验证非常新

我有一个API,我可以通过客户端凭据向邮递员发出get请求。它返回一个不记名令牌

我现在正试着用cucumber和Restarsed解决这个问题

所以我们有这段代码,它试图为下一步(API调用)获取承载令牌

@Given("^the user has a valid authentication token for credentials$")
public void the_user_with_credentials_something_and_something_has_a_valid_authentication_token() throws Throwable {
    
        RestAssured.baseURI=SCN_CONTEXT.getProp().getExternalUri();
        Response accessTokenResponse = given()
                 .header("Content-Type", "application/json")
                 .queryParams("client_id", SCN_CONTEXT.getProp().getClientId())
                 .queryParams("client_secret", SCN_CONTEXT.getProp().getClientSecret())
                 .when().log().all().get(APIResources.valueOf("oAuthAPI").getValue());
         
         System.out.println(accessTokenResponse.getStatusCode());
         SCN_CONTEXT.get_SCN().write("accessTokenResponse: " + accessTokenResponse.getStatusCode());

          JsonPath js=new io.restassured.path.json.JsonPath(accessTokenResponse.body().asString());
            id_token="Bearer " + js.getString("id_token");
            SCN_CONTEXT.setId_token(id_token);
            SCN_CONTEXT._SCN.write("Authentication Token is: " + id_token);
            
    }
使用的externalUri是我在Postman中使用的令牌访问uri

但在这样做时,我得到一个403,标记为空

控制台日志:(任何带有?I删除的内容)

请求方法:获取
请求URI:https://?.com/?/v1/?/oauth/token?客户端\u id=?&客户端\u机密=?
代理:
请求参数:
查询参数:client_id=?
客户_机密=?
表格参数:
路径参数:
标题:接受=*/*
内容类型=应用程序/json;字符集=UTF-8
曲奇饼:
多部分:
正文:
403

这里有很多东西要看,对于类似的需求,我在邮递员控制台中有以下内容。看起来这可能是一个
GET
调用,但从技术上讲,这是一个
POST
调用

授权是
Base64
编码的,作为头发送,查询参数是
grant\u type
scope

这方面的放心代码将是

given().header("Content-Type", "application/x-www-form-urlencoded").auth().preemptive()
        .basic("abc", "def")
        .queryParam("grant_type", "client_credentials").queryParam("scope", "123").when()
        .post("ghi").then().extract().response();

这里有很多东西要看,对于类似的要求,我在邮递员控制台中有以下内容。看起来这可能是一个
GET
调用,但从技术上讲,这是一个
POST
调用

授权是
Base64
编码的,作为头发送,查询参数是
grant\u type
scope

这方面的放心代码将是

given().header("Content-Type", "application/x-www-form-urlencoded").auth().preemptive()
        .basic("abc", "def")
        .queryParam("grant_type", "client_credentials").queryParam("scope", "123").when()
        .post("ghi").then().extract().response();

HTTP 403是一个HTTP状态代码,表示禁止访问请求的资源,请在
given()
之后添加
.log().all()
,并比较邮递员的请求详细信息,确保检查是否存在任何差异。还要在这里发布完整的控制台日志,以便进一步调试。我混淆了客户端id和机密,在哪里可以找到邮递员请求的详细信息?不确定为什么没有获取详细信息:Slol所以这是故意的,是吗,那么你的意思是说代替
你看到了所有的详细信息,但是你得到了
403
?是的,这是故意的,我看到了正确的详细信息并获取了403。你能拨入我的WebEx吗?如果我可以看一下,我可以帮助您快速解决它HTTP 403是一个HTTP状态码,意味着禁止访问请求的资源,请在
given()
之后添加
.log().all()
,并比较邮递员的请求详细信息,确保检查是否有任何差异。还要在这里发布完整的控制台日志,以便进一步调试。我混淆了客户端id和机密,在哪里可以找到邮递员请求的详细信息?不确定为什么没有获取详细信息:Slol所以这是故意的,是吗,那么你的意思是说代替
你看到了所有的详细信息,但是你得到了
403
?是的,这是故意的,我看到了正确的详细信息并获取了403。你能拨入我的WebEx吗?如果我能看一下,我可以帮你很快解决