Dans le deuxième article de la série sur le développement d'applications sur SAP Cloud Platform dans l'environnement Neo, nous couvrirons l'un des aspects les plus importants - la gestion des autorisations et de l'authentification des utilisateurs.
Dans cet article, nous allons montrer comment établir une connexion entre SAP Cloud Platform et le fournisseur d'identité (IDP) du client imaginaire ABC PetroCorp, et également ajouter des utilisateurs à l'IDP. Ensuite, nous verrons comment attribuer des rôles pour les utilisateurs de l'entreprise cliente dans une application spécifique (à partir d'IDP), ainsi que comment configurer les attributs SAML pour leur transfert d'IDP vers l'application de la plateforme cloud SCP.
Dans le sous-compte du client fictif ABC PetroCorp
du premier article , un abonnement aux applications de surveillance de la pollution SCP fourni par ITeLO Consulting est déjà installé. Maintenant, l'employé d'ABC PetroCorp doit mettre cette application à la disposition d'autres collègues.
Un utilisateur SAP Cloud Platform peut connecter son IDP d'entreprise à la plateforme cloud et configurer la gestion de la sécurité et de l'authentification pour son application chargée dans SCP.
ABC PetroCorp a activé le service SAP Cloud Platform Identity Authentication, qui donne accès aux processus métier, aux applications et aux données. Ce service fournit un locataire SCI, à l'intérieur duquel se trouvent une configuration d'application et une gestion des autorisations des utilisateurs.
Emily, le héros imaginaire du premier article, a accès à ce locataire SCI - elle est son administrateur et peut configurer l'autorisation utilisateur dans une application spécifique. Elle souhaite découvrir comment créer ces configurations à l'aide du service d'authentification d'identité.
Prérequis:
- Un compte SCP mondial productif (non d'essai) avec le service d'authentification d'identité connecté (en tant qu'IDP pour le sous-compte ABC PetroCorp);
- L’utilisateur du sous-compte du client doit être l’administrateur du locataire SCI, il aura donc accès à la console d’administration du service d’authentification d’identité.
Emily doit effectuer les étapes suivantes dans la console d'administration du service d'authentification d'identité et le panneau de configuration SCP pour mettre l'application dans la plateforme cloud à la disposition des autres employés d'ABC PetroCorp:
Étape 1: Établir une relation de confiance entre le locataire SCI et le sous-compte SCP.
Étape 2: importez des utilisateurs dans le client SCI et mettez à jour (ajoutez) les attributs nécessaires.
Étape 3: attribuez des rôles aux utilisateurs de niveau application dans SCP.
Étape 4: configurez les attributs dans le client SCI et le panneau de configuration SCP pour les transférer vers l'application.
Étape 5: Vérifiez les paramètres.Étape 1: Établir une relation de confiance entre le locataire SCI et le sous-compte SCP
Emily est l'administrateur du sous-compte ABC PetroCorp et du locataire SCI, ce qui lui permet d'appliquer les paramètres nécessaires pour utiliser le locataire SCI en tant que «référentiel d'utilisateurs» pour l'application multi-locataire fournie par le fournisseur ITeLO Consulting.
Tout d'abord, Emily doit établir une relation de confiance entre le locataire SCI et le sous-compte SCP du client ABC PetroCorp.
Nous allons accéder à la console d'administration du service d'authentification d'identité en utilisant le lien «https: //.accounts.ondemand.com/admin», où est l'identifiant du locataire SCI. Ce lien se trouve dans la lettre d'enregistrement qui parvient à l'administrateur du locataire du service d'authentification d'identité. L'identifiant du locataire y est également indiqué.
La console d'administration du service d'authentification d'identité est la suivante:

Dans un autre onglet du navigateur, ouvrez le panneau de configuration du sous-compte client "ABC PetroCorp" et accédez à l'onglet "Sécurité" -> "Trust".

Dans le menu "Trust Management" qui s'ouvre, accédez à l'onglet "Local Service Provider" et cliquez sur "Modifier".

Ensuite, nous effectuons les étapes suivantes:
- Dans le champ "Type de configuration", changez le type en "Personnalisé";
- Cliquez sur «Générer une paire de clés» pour créer une clé et un certificat pour le compte;
- Remplacez la valeur du champ «Propagation principale» par «Activer»;
- Cliquez sur "Enregistrer".

Cliquez sur «Obtenir les métadonnées» pour télécharger le fichier de métadonnées au format «xml», qui contient les configurations décrites précédemment. Il sera utilisé pour établir la confiance avec le locataire SCI.
Revenons à la console d'administration du service d'authentification d'identité et allons dans l'onglet «Applications et ressources» -> «Applications» dans le menu de gauche. Dans la zone «Applications», cliquez sur le bouton «Ajouter» pour indiquer une nouvelle application déployée dans le sous-compte «ABC PetroCorp».

Dans la fenêtre qui apparaît, entrez le nom de l'application (par exemple, ABC_PetroCorp_IDP) et cliquez sur "Enregistrer". Après cela, un nouveau point sera créé dans le locataire pour notre application.
Dans l'application créée, allez dans l'onglet «Trust» et sélectionnez le paramètre «SAML 2.0 Configuration».

Dans la section «Définir à partir des métadonnées», cliquez sur «Parcourir» et sélectionnez le fichier de métadonnées au format «xml», que nous avons téléchargé plus tôt lors de la configuration de la confiance dans le sous-compte SCP. Les détails concernant la configuration de SAML 2.0 seront automatiquement renseignés après le téléchargement du fichier. Cliquez sur «Enregistrer» - maintenant la configuration SAML 2.0 est créée et enregistrée pour cette application.

Revenez au point d'application appelé ABC_PetroCorp_IDP dans le locataire, cliquez sur "URL d'accueil" et entrez une URL telle que "https: // pollutionmonitoringui- <subaccount_name> .dispatcher. <region_host>".
Cette URL se trouve dans la description de l'application HTML5 à laquelle le client est abonné (sous-compte "ABC PetroCorp"). Pour ce faire, accédez au sous-compte du client dans l'onglet "Applications" -> "Abonnements" et sélectionnez l'application HTML5 signée.

Dans l'onglet «Présentation» se trouvera l'URL dont nous avons besoin.

Ensuite, nous revenons au point d'application dans le locataire SCI, désignons l'URL de l'application dans «URL d'accueil» et cliquez sur «Enregistrer».

Allez maintenant dans l'onglet «Applications et ressources» -> «Paramètres du locataire» dans la console d'administration du service d'authentification d'identité. Sur la page des paramètres du locataire, sélectionnez «Configuration SAML 2.0».

Dans la fenêtre qui s'ouvre, cliquez sur «Télécharger le fichier de métadonnées» pour télécharger le fichier «xml» contenant les configurations des locataires SCI. Il sera utilisé à l'avenir pour établir la confiance avec le sous-compte du client dans SCP.
Revenez au sous-compte «ABC PetroCorp» et allez dans le menu «Sécurité» -> «Trust», dans la fenêtre qui s'ouvre, sélectionnez l'onglet «Application Identity Provider». Cliquez sur «Ajouter un fournisseur d'identité de confiance» pour ajouter des détails sur le locataire SCI.

Dans l'onglet «Général», cliquez sur «Parcourir» et sélectionnez le fichier de métadonnées au format «xml» téléchargé depuis la console d'administration du service d'authentification d'identité. Les détails de configuration sont automatiquement renseignés après le téléchargement du fichier. Décochez la case «Uniquement pour l'authentification unique initiée par IDP» et cliquez sur «Enregistrer».

Maintenant, la relation de confiance entre le sous-compte du client ABC PetroCorp et son locataire SCI a été établie avec succès. Les mêmes paramètres peuvent être appliqués aux sous-comptes d'autres clients (par exemple, pour le client XYZ EnergyCorp).
Étape 2: importer des utilisateurs dans le locataire SCI et mettre à jour (ajouter) les attributs nécessaires
Emily doit s'assurer que les utilisateurs de l'application sont enregistrés auprès du PDI d'entreprise d'ABC PetroCorp.
Idéalement, un PDI d'entreprise (dans notre cas, un locataire SCI) devrait déjà inclure une liste de tous les utilisateurs de l'entreprise. Pour plus de clarté, nous importons certains utilisateurs dans le locataire SCI, après quoi ils recevront les autorisations appropriées pour accéder à l'application.
Les démos de l'application sont stockées dans un fichier «csv» sur github -
sur Github .
Téléchargez le fichier «CSV» pour «ABC PetroCorp» depuis GitHub. Deux utilisateurs sont indiqués dans le fichier «csv»:
- ABCPlantSupervisor: Cet utilisateur sera le gestionnaire d'une usine ABC PetroCorp spécifique et ne pourra voir que les données de son usine;
- ABCAreaManager: Cet utilisateur sera le gestionnaire d'une zone entière, qui peut inclure plusieurs usines ABC PetroCorp. Il pourra voir les données de toutes les usines de sa région.

Le fichier .csv pour ABC PetroCorp contient des adresses électroniques d'utilisateurs fictives. Ils doivent être remplacés par de vrais, car des lettres leur seront envoyées pour activer les comptes. Par exemple, si votre véritable courrier est «john.smith@sap.com», vous devez remplacer la désignation <> par «john.smith» et <<insert_your_company>> par «sap».

Accédez à la console d'administration du service d'authentification d'identité et sélectionnez l'onglet «Utilisateurs et autorisations» -> «Importer des utilisateurs». Sélectionnez le point d'application précédemment créé "ABC_PetroCorp_IDP" et cliquez sur "Parcourir", puis sélectionnez le fichier "ABCPetroCorp.csv" qui décrit nos utilisateurs de démonstration - et cliquez sur le bouton "Importer".

Les utilisateurs doivent activer leur compte. Pour recevoir un e-mail avec un lien d'activation, vous devez cliquer sur "Envoyer" dans la fenêtre "Envoyer des e-mails".
Avant d'activer l'utilisateur, vous devez modifier certaines configurations.
Accédez à l'onglet "Utilisateurs et autorisations" -> "Gestion des utilisateurs". Deux utilisateurs figuraient dans les listes d'utilisateurs: «Area Manager» et «Plant Supervisor». Des identifiants leur sont automatiquement attribués: P000011 et P000010. Ces identifiants peuvent être utilisés comme identifiants pour entrer le locataire (et dans l'application, lorsque tous les paramètres nécessaires sont définis).

Passons à l'utilisateur P000011 ou «Area Manager» et ajoutons un nom qui peut également être utilisé comme identifiant pour entrer. Pour ce faire, cliquez sur l'icône de modification dans le champ "Informations personnelles" et remplissez le "Nom de connexion" (dans notre cas, c'est Johan).

Cliquez ensuite sur «Enregistrer».
Maintenant, faisons de même avec l'utilisateur P000010 ou Plant Supervisor, mais appelons-le Smith.

L'utilisateur du superviseur d'usine ne doit pouvoir afficher que des informations sur son usine, puis dans la section contenant des informations sur l'entreprise, il est nécessaire d'indiquer l'identifiant de l'entreprise (comment cet identifiant sera utilisé sera expliqué à l'étape 4).
Pour ce faire, accédez à la section "Informations sur la société" et saisissez l'identifiant de l'installation, à savoir "101", dans le champ "Société".
Maintenant, les informations sur nos utilisateurs ont été modifiées. Pour les activer, accédez aux boîtes aux lettres spécifiées dans le fichier «csv» et cliquez sur le lien d'activation, ou cliquez sur «Cliquez ici pour activer votre compte».

Nous avons donc réussi à importer des utilisateurs dans le locataire SCI, à mettre à jour les informations les concernant et à les activer.
Étape 3: attribution de rôles aux utilisateurs au niveau de l'application dans SAP Cloud Platform
L'application de surveillance de la pollution à locataires multiples, créée par Robert de ITeLO Consulting, fournit deux rôles prédéfinis, PlantSupervisor et AreaManager, qui contrôlent l'autorisation des utilisateurs dans l'application et déterminent ce que voit l'utilisateur final.
- Rôle PlantSupervisor: les utilisateurs auxquels ce rôle est attribué ne pourront afficher que les données de la plante identifiée dans les informations sur la société dans le client SCI.
- Rôle «AreaManager»: les utilisateurs auxquels ce rôle est attribué pourront afficher les données de toutes les usines de leur région.
Voyons comment la séparation des rôles est réalisée au niveau du code de projet.
Passons au fichier web.xml situé le long du chemin / surveillance de la pollution
/src/main/webapp/WEB-INF/web.xml ”dans le dossier du projet.
Ouvrez le fichier et assurez-vous que les deux rôles ci-dessus sont définis dans l'application.

Passons maintenant au fichier «PollutionDataService.java» situé le long du chemin «/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java» du projet et ouvrez-le.
La méthode "getCompanyPollutionData ()" est indiquée dans ce fichier. Il vous permet de vérifier si l'utilisateur est un administrateur (gestionnaire). Si oui, l'application affiche les données de toutes les usines, sinon, les données sont filtrées par l'ID de l'usine (plant_id). De plus, l'application n'affichera les informations que pour les usines dont les identifiants correspondent à ceux indiqués dans les informations utilisateur.

Pour plus de clarté, vous pouvez vous référer à la méthode isUserAdmin (), qui vous permet de déterminer par rôle si un utilisateur est un administrateur (gestionnaire) ou non.

Un algorithme similaire est utilisé pour extraire les données de l'installation des systèmes locaux.

Maintenant, Emily, en tant qu'employée d'ABC PetroCorp, doit identifier les directeurs de zone et les directeurs d'usine en leur attribuant les rôles appropriés (ABCPlantSupervisor et ABCAreaManager) dans l'application dans SCP.
Nous allons accéder au sous-compte du client ABC PetroCorp et sélectionner l'application Java de surveillance de la pollution fournie par le fournisseur ITeLO Consulting (elle se trouve dans l'onglet Applications -> onglet Abonnements).

Ensuite, allez dans l'onglet «Rôles» (au niveau de l'application).
Dans la fenêtre qui s'ouvre, une liste des rôles indiqués dans l'application apparaît. Sélectionnez le rôle "PlantSupervisor" et cliquez sur "Attribuer". Dans la fenêtre qui apparaît, entrez l'ID utilisateur, indiqué dans le locataire SCI comme "ABCPlantSupervisor". Dans notre cas, l'identifiant d'un tel utilisateur sera P000010.
Sélectionnez ensuite le rôle «AreaManager» et cliquez sur «Attribuer». Dans la fenêtre qui apparaît, entrez l'identifiant utilisateur indiqué dans le locataire SCI comme "ABCAreaManager" (dans notre cas, l'identifiant d'un tel utilisateur sera P000011).

Nous avons donc réussi à comparer les rôles de l'application avec les utilisateurs correspondants d'ABC PetroCorp du locataire SCI.
Les mêmes paramètres peuvent être appliqués dans le sous-compte d'un autre client (par exemple, «XYZ EnergyCorp»).
Étape 4: Configuration des attributs dans le client SCI et le panneau de configuration SCP pour le transfert vers l'application
Robert de ITeLO Consulting a programmé l'application multi-locataire de telle manière qu'il doit transmettre l'identifiant utilisateur PlantSupervisor à la plante afin que les données de la plante puissent être filtrées dans l'application pour cet identifiant de plante particulier.
Dans les étapes précédentes, nous avons ajouté l'identifiant de l'installation à l'utilisateur «PlantSupervisor» dans le locataire SCI dans le champ «Informations sur la société», que nous devons maintenant transférer vers l'application multi-locataire. Il peut ensuite être utilisé dans une application pour afficher des données relatives à une usine particulière. L'utilisateur AreaManager est essentiellement un administrateur qui peut afficher les données de toutes les usines.
Voyons comment cela est organisé au niveau du code d'application.
Ouvrez le fichier «PollutionDataService.java» situé sur le chemin «/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java» dans le projet.
Ce fichier décrit la méthode getPlantId (). Cette méthode décrit l'obtention du nom d'utilisateur et la vérification de l'attribut «PLANT_ID», qui est utilisé pour filtrer les données de pollution et les données d'usine.

Nous pouvons transférer des attributs utilisateur du locataire SCI vers l'application via les attributs d'assertion SAML. Cela est nécessaire pour que l'attribut utilisateur du locataire SCI contenant les informations de l'entreprise soit lu par SCP au moment où l'utilisateur se connecte. Le soi-disant «attribut d'assertion» (attribut d'approbation) défini pour l'utilisateur doit être transféré à l'application de surveillance de la pollution.
Pour ce faire, créez d'abord un "attribut d'assertion" dans le locataire SCI, puis - désignez l'attribut d'approbation dans l'attribut principal ("attribut principal") du sous-compte "ABC PetroCorp", qui peut être lu par le code d'application, comme indiqué ci-dessus.
Accédez à la console d'administration du service d'authentification d'identité et sélectionnez l'onglet «Applications et ressources» -> «Applications». Sélectionnez l'application dont nous avons besoin (ABC_PetroCorp_IDP) et dans l'onglet «Trust», cliquez sur «Attributs d'assertion».

Une liste d'attributs existants apparaîtra, nous en avons besoin d'un de plus. Pour ce faire, cliquez sur le bouton "Ajouter" et sélectionnez l'attribut "Société".
Ensuite, nous ajoutons "plant_id" (sensible à la casse) à la valeur d'attribut et cliquez sur "Enregistrer".

Maintenant, allez dans le sous-compte "ABC PetroCorp" dans SCP et allez dans l'onglet "Sécurité" -> "Trust". Dans la fenêtre "Trust Management", accédez à l'onglet "Application Identity Provider" et sélectionnez l'IdP associé au sous-compte.

Dans la fenêtre qui s'ouvre, allez dans l'onglet «Attributs» et cliquez sur «Ajouter un attribut basé sur une assertion». Dans le champ "Attribut d'assertion", nous entrons la valeur "plant_id" (comme dans le locataire SCI), et dans le champ "Attribut principal", nous entrons "PLANT_ID" (cette valeur sera transférée à l'application comme code d'usine) - et cliquez sur "Enregistrer".
Nous avons donc configuré avec succès les attributs dans le client SCI et dans le panneau de configuration SCP pour les transférer vers l'application.
Étape 5: vérifier les paramètres
Emily peut désormais vérifier que les paramètres SCI Tenant (IdP) sont correctement définis pour le sous-compte «ABC PetroCorp» dans SCP et pour l'application fournie par le fournisseur.
Pour ce faire, rendez-vous dans le sous-compte "ABC PetroCorp" et accédez à l'application HTML5 "pollutionmonitoringui" (elle se trouve dans l'onglet "Applications" -> "Abonnements").

Copiez le lien vers l'application. Ouvrez un nouvel onglet dans le navigateur en mode navigation privée et insérez un lien vers l'application HTML5. Une fenêtre apparaîtra pour entrer dans l'application, où le nom indiqué dans le locataire SCI sera affiché.
Si tout est correctement configuré, vous devriez pouvoir entrer l'application sous les utilisateurs de «AreaManager» et «PlantSupervisor», indiqués dans le locataire SCI.
Dans notre cas, le directeur de la région est l'utilisateur Johan (P000011) et le chef de l'usine est Smith (P000010). Vous pouvez entrer l'application sous ces utilisateurs en utilisant soit le nom d'utilisateur ou son identifiant comme identifiant.
Remarque: lors de la saisie de l'application à ce stade, aucune donnée ne sera affichée. Ceci est normal car la configuration n'est pas encore terminée et le système local n'est pas connecté.
Nous avons donc mis en place une connexion Identity Provider (IDP) avec notre application de surveillance de la pollution SCP. Nous avons également importé des utilisateurs et leur avons attribué les rôles appropriés pour accéder à l'application, en veillant à ce que les informations correctes sur l'installation soient transférées vers l'application.