Sécurisation des services Web RESTful

Définir des rôles, des privilèges et des clients OAuth pour garantir que l'authentification et l'autorisation sont requises pour accéder aux services Web RESTful.

Pour protéger un service Web RESTful, vous devez :

  • Créer un rôle

  • Créer un privilège en sélectionnant le rôle et les modules ou les ressources à protéger

Pour activer l'accès à un service RESTful protégé à l'aide du workflow OAUTH2, créez un client OAuth à l'aide du rôle et du privilège créés pour protéger le service RESTful.

Les sections suivantes expliquent comment créer des rôles, des privilèges et des clients OAuth :

Gestion des rôles

Vous pouvez créer, modifier et supprimer des rôles pour les services RESTful dans la page Roles.

Pour accéder à la page Rôles, sur la page de présentation REST, cliquez sur Rôles dans Objets ou, dans le menu de l'en-tête, sélectionnez Sécurité, puis Rôles.

Les actions disponibles dans le menu contextuel sont les suivantes :

Création d'un rôle

Créez un rôle avec un nom spécifique. Une fois le rôle créé, vous pouvez l'associer à un privilège.

  1. Sur la page Rôles, cliquez sur Créer un rôle.
  2. Dans le champ Nom du rôle, entrez le nom du rôle à créer.

    Afficher le code : sélectionnez cette option pour afficher le code PL/SQL équivalent du curseur Créer un rôle. Vous pouvez copier et exécuter ce code PL/SQL dans la feuille de calcul pour effectuer la même action que lorsque vous cliquez sur Créer dans le curseur Créer un rôle.

  3. Cliquez sur Créer.

    Le nouveau rôle affecté s'affiche sur la page Rôles.

Modification d'un rôle

Cette section explique comment modifier un rôle.

  1. Sur la page Rôles, pour le rôle spécifique, cliquez sur Actions menu contextuel et sélectionnez Modifier.
  2. Entrez les modifications requises et cliquez sur Enregistrer.

    Pour une description des champs, reportez-vous à la rubrique Création d'un rôle.

Suppression d'un rôle

Cette section explique comment supprimer un rôle.

  1. Sur la page Rôles, pour le rôle spécifique, cliquez sur Actions menu contextuel et sélectionnez Supprimer.

    Vous êtes invité à confirmer.

  2. Cliquez sur Oui pour effectuer la suppression.

Consultation des privilèges affectés

Cette section explique comment afficher les privilèges associés à un rôle.

Sur la page Rôles, pour le rôle spécifique, cliquez sur Actions menu contextuel et sélectionnez Détails. Les privilèges affectés au rôle sont affichés.

Gestion des privilèges

Vous pouvez créer, modifier et supprimer des privilèges pour les services RESTful dans la page Privileges.

Un privilège définit l'ensemble de rôles, dont au moins l'un doit posséder un utilisateur authentifié pour accéder à un service RESTful protégé par un privilège.

Pour accéder à la page Privilèges, sur la page de présentation REST, cliquez sur Privilèges dans Objets ou, dans le menu de l'en-tête, sélectionnez Sécurité, puis Privilèges.

Les attributs de privilège affichés par défaut dans la vue de carte sont illustrés dans la figure suivante.

Les actions disponibles dans le menu contextuel sont les suivantes :

Création d'un privilège

Cette section explique comment créer un privilège.

  1. Sur la page Privilèges, cliquez sur Créer un privilège.
  2. Entrez les informations suivantes . Les champs accompagnés d'un astérisque (*) sont obligatoires :
    • Libellé : entrez le nom du privilège de manière à ce qu'il soit facile à comprendre.
    • Nom : entrez un nom unique pour le privilège.
    • Description : Entrez une brève description de l'objectif du privilège.
    • Commentaires : Entrez des commentaires.
    • Rôles : entrez un ou plusieurs rôles affectés au privilège.
    • Modules protégés : sélectionnez les modules à protéger.
    • Ressources protégées : au lieu de modules protégés, utilisez l'onglet Protéger les ressources pour appliquer la sécurité en fonction d'un modèle d'URI.

    Afficher le code : sélectionnez cette option pour visualiser l'équivalent de code PL/SQL du curseur Créer un privilège. Vous pouvez copier et exécuter ce code PL/SQL dans la feuille de calcul pour effectuer la même action que lorsque vous cliquez sur Créer dans le curseur Créer un privilège.

  3. Cliquez sur Créer.

    Le nouveau privilège s'affiche sur la page Privilèges.

Modification d'un privilège

Cette section explique comment modifier un privilège.

  1. Sur la page Privilèges, pour le privilège spécifique, cliquez sur Actions menu contextuel et sélectionnez Modifier.
  2. Effectuez les modifications requises, puis cliquez sur Enregistrer.

    Pour une description des champs, reportez-vous à la rubrique Création d'un privilège.

Suppression d'un privilège

Cette section explique comment supprimer un privilège.

  1. Sur la page Privilèges, pour le privilège spécifique, cliquez sur Actions menu contextuel et sélectionnez Supprimer.
  2. Vous êtes invité à confirmer. Cliquez sur Oui.

Gestion des clients OAuth

Grâce à l'authentification basée sur OAuth 2.0, vous pouvez vous assurer que les services Web RESTful sont accessibles uniquement par des utilisateurs ou des clients spécifiques.

OAuth 2.0 est un protocole Internet standard qui définit des flux afin de fournir un accès conditionnel et limité à une API RESTful. Pour plus d'informations, voir Authentification basée sur OAuth.

Vous pouvez créer, modifier et supprimer des clients OAuth sur la page Clients OAuth.

Pour accéder à la page Clients OAuth, sur la page de présentation REST, cliquez sur Clients dans Objets ou, dans le menu de l'en-tête, sélectionnez Sécurité, puis Client OAuth.

Les attributs du client OAuth affichés par défaut dans la vue de carte sont illustrés dans la figure suivante.

Pour créer un client OAuth, reportez-vous à Création d'un client OAuth.

Les actions disponibles dans le menu contextuel sont les suivantes :

Création d'un client OAuth

Crée le client OAuth et accorde les rôles et privilèges requis.

  1. Sur la page Clients OAuth, sélectionnez Créer un client OAuth.
  2. Entrez les informations suivantes . Les champs accompagnés d'un astérisque (*) sont obligatoires :

    Onglet Définition du client

    • Type d'octroi : sélectionnez le type d'octroi d'autorisation. Les options sont Client_Cred, Auth Code ou Implicit.

      Pour plus d'informations sur ces types d'octroi, reportez-vous à Flux OAuth dans le Guide du développeur Oracle REST Data Services.

    • Nom : nom du client.
    • Description : Description de l'objectif du client.
    • URI de réacheminement : entrez l'URI contrôlé par le client vers lequel le réacheminement contenant un jeton d'accès OAuth ou une erreur sera envoyé.
    • URI de support : entrez l'URI où les utilisateurs finals peuvent contacter le client pour obtenir de l'aide. Exemple : http :// www.myclientdomain.com/support/
    • Adresse électronique du support technique : entrez l'adresse électronique à laquelle les utilisateurs peuvent contacter le client pour obtenir de l'aide.
    • Logo : chargez votre logo au format JPG, BMP ou SVG. Assurez-vous que la taille du logo est inférieure à 100 Ko.
    • Rôles : sélectionnez les rôles à accorder.
    • Origines autorisées : ajoutez la liste des préfixes d'URL.
    • Privilèges : sélectionnez les privilèges auxquels le client souhaite accéder.

    Afficher le code : sélectionnez cette option pour afficher le code PL/SQL équivalent au panneau Créer un client OAuth. Vous pouvez copier et exécuter ce code PL/SQL dans la feuille de calcul pour effectuer la même action que lorsque vous cliquez sur Create (Créer) dans le panneau Create OAuth Client (Créer un client OAuth).

  3. Cliquez sur Créer.

    Le client OAuth inscrit est affiché sur la page Clients OAuth.

    Un aperçu de la clé secrète du client s'affiche. Les clés secrètes sont applicables uniquement aux identifiants client et aux types d'octroi de code OAuth. Copiez la valeur de clé secrète car il s'agit de la seule instance affichée. Si vous oubliez la clé secrète client, vous pouvez utiliser l'action Faire pivoter la clé secrète pour la modifier. Reportez-vous à Gestion des clés secrètes.

    La valeur de l'ID client représente les informations d'identification secrètes du client OAuth. Cliquez sur Afficher/Masquer icône Afficher/Masquer pour afficher les valeurs.

    Tester l'adresse de service REST sécurisée à l'aide d'un client REST ou de l'outil de ligne de commande cURL.

Modification d'un client OAuth

Cette section explique comment modifier un client OAuth.

  1. Sur la page Clients OAuth, pour le client spécifique, cliquez sur Actions menu contextuel et sélectionnez Modifier.
  2. Modifiez les champs obligatoires et cliquez sur Enregistrer.

    Pour une description des champs, reportez-vous à Création d'un client OAuth.

Suppression d'un client OAuth

Cette section décrit la suppression d'un client OAuth.

  1. Sur la page Clients OAuth, pour le client spécifique, cliquez sur Actions menu contextuel et sélectionnez Supprimer.
  2. Vous êtes invité à confirmer. Cliquez sur Oui.

Export d'un client OAuth

Cette section explique comment exporter un client OAuth.

  1. Sur la page Clients OAuth, pour le client spécifique, cliquez sur Actions menu contextuel et sélectionnez Exporter.
  2. Dans le panneau Client OAuth, cliquez sur l'icône Copier ou sur Télécharger pour copier ou télécharger les informations sur le client OAuth.

Gestion des clés secrètes

Une fois qu'une clé secrète client est générée pour un client OAuth, vous pouvez la faire pivoter ou la révoquer si nécessaire. Les options Rotate et Revoke sont disponibles dans le menu contextuel du client OAuth spécifique.

Remarques :

Avec l'abandon des packages PL/SQL OAUTH et OAUTH_ADMIN (reportez-vous à Référence de package PL/SQL ORDS_SECURITY), le processus de création de clé secrète client OAUTH change pour les types d'octroi d'identifiants client et de code d'authentification.

Pour les clients OAuth qui ont été créés avec une clé secrète non cryptée, le libellé Legacy est affiché sur la carte.

Rotation d'une clé secrète client

Supprime la clé secrète existante et en crée une nouvelle. Cela est utile lorsque vous ne pouvez pas mémoriser la valeur de clé secrète client existante.

  • Si une clé secrète client existe pour le client OAuth, cliquez sur Effectuer une rotation pour enlever la clé secrète existante et générer une nouvelle clé secrète client.

  • Si une clé secrète client est révoquée et qu'aucune valeur de clé secrète n'est affectée, cliquez sur Inscrire pour générer une clé secrète client pour le client OAuth.

Révoquer une clé secrète client

Supprime la clé secrète client existante.

Sélectionnez Révoquer les sessions pour enlever toutes les sessions client existantes.

Exemples 

Cette section fournit quelques exemples de création d'un client OAuth avec différents types d'octroi.

Création d'un client OAuth à l'aide du type d'octroi Informations d'identification client

Cette section explique comment créer un client OAuth à l'aide du type d'octroi Informations d'identification client.

Créez un client OAuth pour le module créé "exemple" dans Exemple : insertion d'un enregistrement à l'aide d'un gestionnaire POST. L'adresse du service RESTful est http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/.

Prérequis

Créez un rôle nommé HR Admin. Voir la section Creating a Role.

Créez un privilège nommé Example.HR. Reportez-vous à Création d'un privilège.

  1. Sur la page Clients OAuth, cliquez sur Créer un client OAuth.
  2. Entrez les informations suivantes :
    • Dans le champ Type d'octroi, sélectionnez CLIENT_CRED.
    • Entrez le nom, la description, l'URI de redirection, l'URI de support et le courriel de support pour votre client OAuth.

    • Dans l'onglet Rôles, ajoutez le rôle créé (administration RH).

    • Dans l'onglet Privilèges, ajoutez le privilège créé (Exemple.HR).

    • Cliquez sur Créer.

    La nouvelle carte client OAuth apparaît sur la page Clients OAuth.

  3. A l'aide de cURL, testez l'adresse de service sans informations d'identification OAuth.
    curl --location --request POST --header "Content-Type: application/json" 
    --data '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia" }' 
    'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    Une erreur s'affiche.

  4. Testez l'adresse avec les informations d'identification OAuth :
    1. Pour obtenir un jeton d'accès, sélectionnez Obtenir un jeton de support dans le menu contextuel de la carte client OAuth.

      La boîte de dialogue Jeton OAuth apparaît. Utilisez Copier dans le presse-papiers icône Copier dans le presse-papiers pour copier le jeton.

    2. Dans cURL, utilisez le jeton d'accès au porteur dans l'instruction suivante pour demander la ressource :

      curl -H "Content-Type: application/json" -H "Authorization: Bearer AMccwlnt99gm9kxDs_w1DA" --location --request POST --data 
      '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia"}' 'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    La sortie se présente comme suit :

    {"deptno":55,"dname":"Sales","loc":"Australia","links":[{"rel":"collection",
    "href":"http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/"}]}
  5. Dans la page SQL, vous pouvez vérifier le nouvel enregistrement qui a été inséré dans la table DEPT à l'aide de l'instruction suivante :
    SELECT * FROM DEPT;

Création d'un client OAuth à l'aide du type d'octroi Code d'authentification

Cette section explique comment créer un client OAuth à l'aide du type d'octroi Code d'authentification.

  1. Sur la page Clients OAuth, cliquez sur Créer un client OAuth.
  2. Entrez les informations suivantes :
    • Dans le champ Type d'octroi, sélectionnez Code d'authentification.
    • Entrez le nom, la description, l'URI de réacheminement, l'URI de support et l'adresse électronique de support pour votre client OAuth.

    • Dans l'onglet Rôles, ajoutez les rôles appropriés.

    • Dans l'onglet Privilèges, ajoutez les privilèges appropriés.

    • Cliquez sur Créer.

    La nouvelle carte client OAuth apparaît sur la page Clients OAuth.

  3. Dans la carte client OAuth, cliquez sur l'icône Actions et sélectionnez Détails de l'authentification.
    La valeur unique et l'URI d'autorisation apparaissent.
  4. Dans le champ URI d'autorisation, cliquez sur l'icône Ouvrir dans un nouvel onglet. Une nouvelle fenêtre s'affiche avec un message d'erreur Non autorisé et un lien de connexion.
  5. Cliquez sur Connexion et entrez à nouveau vos informations d'identification.
  6. Vous êtes invité à approuver la demande d'accès à l'URI protégé. Cliquez sur Approuver.
    Notification d'approbation de demande