Fermer

mars 13, 2024

Un guide sur l’octroi de code d’autorisation OAuth 2.0 dans les tests d’API à l’aide de Rest Assured / Blogs / Perficient

Un guide sur l’octroi de code d’autorisation OAuth 2.0 dans les tests d’API à l’aide de Rest Assured / Blogs / Perficient


Comprendre OAuth 2.0 : le gardien pour sécuriser l’accès aux API

Dans le domaine en constante évolution des tests d’API, garantir un accès sécurisé et autorisé aux ressources protégées est primordial. C’est ici que OAuth 2.0, un cadre d’autorisation standard de l’industrie, entre en jeu. Il agit comme un mécanisme robuste pour accorder des jetons d’accès temporaires aux applications. Cela leur permet d’interagir avec les API au nom des utilisateurs sans obtenir directement leurs informations d’identification. Cette approche améliore à la fois la sécurité et l’expérience utilisateur.

Dans ce blog, nous explorerons comment effectuer le flux de code d’autorisation OAuth 2.0 à l’aide de REST Assured dans les tests d’API.

Au-delà du code d’autorisation : exploration du paysage des subventions d’OAuth 2.0

Bien que le flux de code d’autorisation soit une approche couramment utilisée, OAuth 2.0 propose une variété de types d’octroi pour répondre à divers scénarios d’autorisation :

  • Octroi du code d’autorisation : (C’est l’objet de ce blog !) Idéal pour les applications Web et les applications côté serveur où vous pouvez stocker en toute sécurité les secrets des clients.
  • Subvention implicite : Cela convient aux clients publics, tels que les applications JavaScript exécutées dans les navigateurs Web, où les secrets client ne sont pas sécurisés.
  • Octroi du mot de passe du propriétaire de la ressource : Ceci est utilisé dans des situations limitées lorsque le consentement de l’utilisateur est facilement disponible et que les secrets des clients peuvent être stockés en toute sécurité.
  • Octroi des informations d’identification du client : Conçu pour la communication machine à machine (M2M), où les applications s’authentifient directement auprès du serveur d’autorisation à l’aide des informations d’identification du client.

Exemple concret : libérer la puissance du code d’autorisation en action

Des sites Web populaires comme Facebook, Google et GitHub utilisez le flux du code d’autorisation pour permettre aux applications tierces d’accéder aux données des utilisateurs avec leur consentement.

Par exemple, lorsque vous vous connectez à une application de fitness en utilisant vos identifiants Facebook. Vous accordez à l’application un accès temporaire à vos données de condition physique sur Facebook sans partager votre mot de passe Facebook réel. L’application suit le flux du code d’autorisation en coulisse pour obtenir le jeton d’accès nécessaire.

Le flux en action : un guide étape par étape

  1. Lancement de la demande d’autorisation : Le client construit une requête contenant des paramètres tels que l’ID client, l’URI de redirection et les étendues demandées au serveur d’autorisation.
  2. Redirection de l’utilisateur : L’utilisateur est redirigé vers la page de connexion du serveur d’autorisation. L’utilisateur s’authentifie et accorde ou refuse les autorisations demandées.
  3. Livraison du code d’autorisation : Après consentement, le serveur d’autorisation redirige l’utilisateur vers l’URI de redirection du client avec un code d’autorisation comme paramètre de requête.
  4. Demande de jeton : Le client envoie une demande au point de terminaison du jeton (serveur de ressources), comprenant le code d’autorisation et les informations d’identification du client. Le client échange la demande contre un jeton d’accès.
  5. Émission de jetons d’accès : Si les informations d’identification sont valides, le serveur accorde au client un jeton d’accès (et éventuellement un jeton d’actualisation).
  6. Accès API : Le client inclut le jeton d’accès dans l’en-tête d’autorisation pour les requêtes API ultérieures, permettant une interaction autorisée avec les ressources protégées.

Exemple de site Web utilisant l’octroi de code d’autorisation OAuth 2.0

Prenons un exemple de site Web, « exemple.com,» qui utilise un code d’autorisation OAuth 2.0 pour l’authentification. Le point de terminaison d’autorisation du site Web est https://example.com/oauth/authorize, et le point de terminaison du jeton (ressource) est https://example.com/oauth/token.

Remarque : Le contrat API est généralement disponible pour tester les API. Il contient toutes les informations requises, telles que les URL, les identifiants client, les secrets client, les URI de redirection, etc.

Exécution du flux de code d’autorisation OAuth 2.0 avec REST Assured

Pour effectuer le flux de code d’autorisation OAuth 2.0 à l’aide de REST Assured, nous devons suivre ces étapes :

  1. Obtenir le code d’autorisation: redirigez l’utilisateur vers le point de terminaison d’autorisation du serveur d’autorisation pour obtenir un code d’autorisation.
  2. Code d’autorisation d’échange pour le jeton d’accès: utilisez le code d’autorisation pour demander un jeton d’accès au point de terminaison du jeton du serveur d’autorisation.
  3. Utiliser le jeton d’accès: utilisez le jeton d’accès pour authentifier les requêtes API.

Exemple de code REST Assured pour le flux de code d’autorisation OAuth 2.0

Vous trouverez ci-dessous le code Rest Assured pour l’exemple de flux avec l’explication :

ublic class OAuth2_AuthCode {

    public static void main(String[] args) throws InterruptedException {
        
          // STEP-1: Obtain Authorization Code
          //paste AUTHORIZATION server/url in browser
          WebDriverManager.chromedriver().setup(); 
          ChromeDriver driver = new ChromeDriver();
          driver.get("https://example.com/oauth/authorize"); 
          
          //sign in > ENTER email> ENTER password >CLICK submit
          driver.findElement(By.cssSelector("input[type="email"]")).sendKeys("test@test.com");
          driver.findElement(By.cssSelector("input[type="email"]")).sendKeys(Keys.ENTER); Thread.sleep(3000);
          driver.findElement(By.cssSelector("input[type="password"]")).sendKeys("MohimPassword");
          driver.findElement(By.cssSelector("input[type="password"]")).sendKeys(Keys.ENTER); Thread.sleep(3000);
          
          //get URL containing CODE 
         String url = driver.getCurrentUrl();
        
        //extract code from it using java functions
        String partial = url.split("code=")[1];
        String code =partial.split("&scope")[0];
        System.out.println(code);
        
        //STEP-2: Exchange Authorization Code for Access Token from Token Endpoint(resource) server/url
        
        //construct request as per the api contract include the code and add required details like id, secret, uri 
        String accessTokenResp = given().urlEncodingEnabled(false).queryParam("code", code)
                .queryParam("client_id", "692183103107-p0m7ent2hk7suguv4vq22hjcfhcr43pj.apps.googleusercontent.com")
                .queryParam("client_secret", "erZOWM9g3UtwNRj340YYaK_W")
                .queryParam("redirect_uri", "https://example.com/")
                .queryParam("grant_type", "authorization_code")
                .when().post("https://example.com/oauth/token")
                .then().log().all().extract().response().asString();
        
        //pass response into JsonPath class object to read json response and extract access_token from it
       
        JsonPath jp = new JsonPath(accessTokenResp);
        String token = jp.getString("access_token");
        
        //Finally execute GET Request using redirect url
        String response = given().queryParam("access_token",token)
                        .when().post("https://example.com/")
                        .then().log().all().extract().response().asString();
        
        System.out.println(response);   
        
    }
}

Dans cet extrait de code, nous avons utilisé des exemples d’URL et des exemples de données pour comprendre le flux utilisant Rest Assured.

Conclusion

En conclusion, le flux de code d’autorisation OAuth 2.0 est une méthode sécurisée et largement utilisée pour l’authentification API. En utilisant REST Assured, vous pouvez facilement exécuter le flux de code d’autorisation OAuth 2.0 dans vos tests d’API. Il garantit que vos API sont sécurisées et conformes aux normes OAuth 2.0.






Source link