Skip to main content

V3.5.1 Token-based Session Management

Requirement:#

Verify the application allows users to revoke OAuth tokens that form trust relationships with linked applications.

Explanation:#

Убедитесь, что приложение позволяет пользователям отзывать Oauth-токены, которые формируют отношения доверия со связанными приложениями.

Remediation:#

Чтобы отозвать токен обновления, отправьте POST-запрос на адрес https://YOUR_DOMAIN/oauth/revoke.

Конечная точка /oauth/revoke забирает весь доступ, а не только конкретный токен. Используйте конечную точку /api/v2/device-credentials для отзыва токенов обновления. API сначала проверяет учетные данные приложения, а затем проверяет, был ли токен выдан приложению, отправляющему запрос на отзыв. Если эта проверка не пройдена, запрос отклоняется, и приложение информируется об ошибке. Затем API делает токен недействительным.

1) JAVA

HttpResponse<String> response = Unirest.post("https://YOUR_DOMAIN/oauth/revoke")
.header("content-type", "application/json")
.body("{ \"client_id\": \"YOUR_CLIENT_ID\", \"client_secret\": \"{yourClientSecret}\", \"token\": \"{yourRefreshToken}\" }")
.asString();

2) C#

var client = new RestClient("https://YOUR_DOMAIN/oauth/revoke");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{ \"client_id\": \"YOUR_CLIENT_ID\", \"client_secret\": \"{yourClientSecret}\", \"token\": \"{yourRefreshToken}\" }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

3) PHP

$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://YOUR_DOMAIN/oauth/revoke",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{ \"client_id\": \"YOUR_CLIENT_ID\", \"client_secret\": \"{yourClientSecret}\", \"token\": \"{yourRefreshToken}\" }",
CURLOPT_HTTPHEADER => [
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}

Additional:#

https://auth0.com/docs/secure/tokens/refresh-tokens/revoke-refresh-tokens