There are many types of authentication or some people prefer to call it authentication protocols in Rest Assured but few popular ones are:
Basic Authentication, OAuth 1 and OAuth 2
The basic authentication requires the users to send user id and a password like:
Response response =
given()
.auth()
.basic("username", "password")
.when()
.get("http://localhost:9090/sample/id/900");
In the case of OAuth 1.0, we need to send a Consumer Key, Secret, Access Token and Token Secret to access a secured resource:
Response response =
given()
.contentType("application/JSON")
.auth()
.oauth(consumerKey, consumerSecret, accessToken, tokenSecret)
.formParam("paramKey", "paramValue").
.when()
.post("http://localhost:9090/sample/id/880");
In the case of OAuth 2.0, the access token is required to access a secured resource:
First, you need to extract access token using authorization URL with the help of ClientId, ClientSecret, grant_type, and scope of the request like:
Response response =
given()
.auth()
.basic(clientId, clientSecret)
.formParam("grant_type", "client_credentials")
.formParam("scope", scope)
.when()
.post(/sample/id/900);
JSONObject jsonObj = new JSONObject(response.getBody().asString());
String accessToken = jsonObj.get("access_token").toString();
OR using ClientId, ClientSecret, username, password, and scope of the request like:
Response response =
given()
.auth()
.basic(clientId, clientSecret)
.formParam("grant_type", "password")
.formParam("username", username)
.formParam("password", password)
.formParam("scope", scope)
.when()
.post(/sample/id/900);
JSONObject jsonObj = new JSONObject(response.getBody().asString());
String accessToken = jsonObj.get("access_token").toString();
Then you can consume that accessToken in oauth2 like:
Response response =
given()
.auth()
.oauth2(accessToken)
.contentType("application/json")
.body(JSONString)
.when()
.post("/sample/id/890");
Note* In order to use OAuth1 and OAuth2 for query parameter signing, you need to add Scribe dependency (scribejava-apis) in your pom.xml along with rest Assured (io.rest-assured) dependency especially if you are using an older version of REST Assured i.e. <2.5.0
Comments
Post a Comment