Créer des connecteurs SCIM pour l'approvisionnement local

Okta Provisioning Agent vous permet d'approvisionner des utilisateurs Okta vers des applications locales installées derrière un pare-feu d'entreprise et d'importer des utilisateurs d'applications d'entreprise dans votre org Okta. La communication entre Okta et les applications locales se fait par l'intermédiaire de Okta Provisioning Agent et d'un serveur SCIM (System for Cross-domain Identity Management) ou d'un connecteur d'approvisionnement conçu à l'aide du SDK Provisioning Connector.

Le protocole SCIM est utilisé pour connecter Okta aux applications locales. Aucune connaissance spécifique en matière de SCIM n'est nécessaire pour créer et utiliser un connecteur. Pour plus d'informations sur SCIM, consultez les Spécifications SCIM 2.0 et 1.1.

Okta Provisioning Agent prend en charge les fonctionnalités d'approvisionnement de SCIM 2.0, telles que la découverte des droits, la création/lecture seule /mise à jour/suppression des utilisateurs, les push des groupes et la gestion du cycle de vie.

Le connecteur reçoit des messages SCIM provenant de Okta Provisioning Agent et les intègre à l'application locale à l'aide de l'interface API de l'application. Il vous suffit de rédiger le code Java qui définit les spécifications de l'application locale. Si nécessaire, vous pouvez créer plusieurs connecteurs pour assurer la connectivité avec différentes applications locales.

Avant de commencer

Pour utiliser le SDK en vue de créer un connecteur, vous aurez besoin des éléments suivants :

  • Le package SDK. Pour télécharger le package d'Okta, connectez-vous en tant qu'administrateur dans Okta et accédez à Paramètres Téléchargements. Cliquez Télécharger la dernière version en regard du SDK Okta Provisioning Connector.
  • Versions minimales Java : 1.6 ou 1.7
  • Un serveur Web pour exécuter votre connecteur en tant que fichier WAR
  • Un IDE, comme Eclipse ou IntelliJ (recommandé)

Les exemples suivants utilisent Maven pour générer l'exemple de connecteur.

Contenu du package SDK

Le package SDK est un fichier compressé. Le tableau suivant décrit le contenu du fichier décompressé.

Fichier Description
README.TXT Décrit le contenu du package SDK.
LICENSE.TXT Toutes les licences pour les bibliothèques référencées.
document La documentation Javadoc pour le SDK Okta Provisioning Agent.
lib/scim-server-sdk-*.jar Bibliothèque SCIM Server Connector SDK. Reportez-vous au serveur d'exemple pour en connaître l'utilisation.
exemple-serveur Un exemple d'implémentation du serveur SCIM qui utilise le SDK Connector. Pour en savoir plus, reportez-vous au fichier README.TXT.
testeur Connecteur testeur Okta. Une application console autonome qui reproduit les commandes d'approvisionnement d'Okta pour tester l'implémentation d'un serveur et d'un connecteur SCIM de façon indépendante. Pour en savoir plus, reportez-vous au fichier README.TXT.

Créer votre connecteur

Vous pouvez créer un connecteur à l'aide du SDK Provisioning Connector pour intégrer vos applications locales à Okta. Le connecteur implémente l'interface SCIMService.

Étape 1 : implémenter SCIMService

Écrivez le programme du connecteur Java qui viendra implémenter l'interface SCIMService. Vous trouverez les documents Javadocs relatifs au SDK dans le répertoire doc.

Méthodes sélectionnées

Le tableau suivant répertorie certaines des méthodes SCIMService que vous pourriez implémenter. Selon les fonctionnalités prises en charge par l'application locale, vous pouvez choisir les méthodes que vous souhaitez implémenter.

Méthode

Description

UserManagementCapabilities[ ] getImplementedUserManagementCapabilities() Cette méthode vous restitue les fonctionnalités de gestion (d'approvisionnement) des utilisateurs implémentées par le connecteur.

Cette méthode est nécessaiore, car elle signale à la fonction d'approvisionnement d'Okta que votre connecteur est implémenté.

SCIMUser createUser(SCIMUser user) Cette méthode est invoquée lorsque Okta envoie une instruction pour créer un utilisateur au sein d'une application locale.
SCIMUser updateUser(String externalId, SCIMUser user) Cette méthode est invoquée lorsque Okta envoie une instruction pour mettre à jour un utilisateur existant au sein d'une application locale.
SCIMUser getUser(String externalId) Cette méthode est invoquée lorsque Okta envoie une instruction pour obtenir un utilisateur déterminé qui provient d'une application locale.
SCIMUserQueryResponse getUsers(PaginationProperties pageProperties, SCIMFilter filter) Cette méthode est invoquée lorsque Okta envoie une instruction pour obtenir un ensemble d'utilisateurs déterminés qui proviennent d'une application locale.
SCIMGroup createGroup(SCIMGroup group) Cette méthode est invoquée lorsque Okta envoie une instruction pour créer un groupe au sein d'une application locale.
SCIMGroup updateGroup(String externalId, SCIMGroup group) Cette méthode est invoquée lorsque Okta envoie une instruction pour mettre à jour un groupe au sein d'une application locale.
SCIMGroupQueryResponse getGroups(PaginationProperties pageProperties) Cette méthode est invoquée lorsque Okta envoie une instruction pour obtenir tous les groupes d'une application locale.
void deleteGroup(String externalId) Cette méthode est invoquée lorsque Okta envoie une instruction pour supprimer un groupe déterminé qui provient d'une application locale.

Fonctionnalités de mappage

Lorsque vous créez votre connecteur et l'interface SCIMService, vous indiquez à Okta quelles Fonctionnalités de gestion des utilisateurs ont été implémentées dans votre connecteur. Cela indique quelles fonctionnalités d'approvisionnement sont disponibles pour l'intégration d'application que vous créez dans Okta. Consultez la section Workflow classique pour le déploiement de l'approvisionnement local pour en savoir plus sur les méthodes de configuration d'une intégration d'application.

Le tableau suivant associe les fonctionnalités d'approvisionnement que vous pouvez définir pour l'intégration d'application dans Okta aux méthodes de votre connecteur SCIMService qui les activent. Elles correspondent aux Fonctionnalités de gestion des utilisateurs que vous pouvez configurer dans le code. Elles ne sont pas visibles lors de l'affichage de l'instance de l'application dans Okta.

Fonctionnalité d'approvisionnement Méthode SCIMService
PUSH_NEW_USER createUser
getUsers
PUSH_PASSWORD_UPDATES updateUser
PUSH_PENDING_USERS createUser
updateUser
getUsers
PUSH_PROFILE_UPDATES updateUser
PUSH_USER_DEACTIVATION updateUser
REACTIVATE_USERS updateUser
IMPORT_NEW_USERS

OPP_SCIM_INCREMENTAL_IMPORTS*

getUsers
getGroups
IMPORT_PROFILE_UPDATES getUser
GROUP_PUSH deleteGroup
updateGroup
createGroup
getGroup

* Activez OPP_SCIM_INCREMENTAL_IMPORTS si votre connecteur SCIM prend en charge le filtrage pour l'attribut meta.lastModified avec l'opérateur d'attribut gt.

Étape 2 : créer votre connecteur

Créez votre connecteur à l'aide de Maven. Consultez les instructions de la section dédiée au connecteur d'exemple.

Étape 3 : déployer votre connecteur

Déployez votre connecteur sur un serveur Web en tant que fichier WAR.

Étape 4 : tester votre connecteur

Testez votre connecteur à l'aide de l'outil Okta Connector Tester dans le testeur.

Étape 5 : tester votre connecteur avec Okta.

Consultez la section Tester les connecteurs SCIM pour l'approvisionnement local.

Exemples de connecteur

Le package SDK comprend un exemple de connecteur nommé exemple-serveur. C'est un connecteur ordinaire qui utilise un magasin de données en mémoire. Vous pouvez également utiliser un magasin de données basé sur des fichiers. Ce connecteur d'exemple s'intègre à l'approvisionnement local et répond aux instructions d'approvisionnement d'Okta.

Créer example-server

Le package contient un code d'exemple qui crée un connecteur fonctionnel permettant de conserver les utilisateurs et les groupes dans un Identity store en mémoire. Un connecteur complet se compose d'un fichier .war.

Suivez les étapes ci-dessous pour créer l'exemple-serveur.

  1. Localisez /lib/scim-server-sdk-<version> .jar du package SDK.
  2. Installez-le en local à l'aide de la commande Maven suivante.

    mvn install:install-file -Dfile=<PATH TO THE JAR> -DgroupId=com.okta.scim.sdk -DartifactId=scim-server-sdk -Dpackaging=jar -Dversion=01.00.xxab.cd.ef est le numéro de version du SDK. Pour obtenir les instructions complètes pour votre package qui comprennent le bon numéro de version, consultez les fichiers install.bat et install.sh dans le dossier /lib.

  3. Générez le connecteur :

    mvn package

  4. Copiez le fichier target/scim-server-example-*.war dans votre répertoire Tomcat et exécutez-le.

Vous pouvez désormais utiliser l'utilitaire Okta Connector Tester pour tester le connecteur. Pour intégrer le connecteur à Okta après l'avoir testé, reportez-vous à l'étape 3 : déployer votre connecteur.

Tester votre connecteur

Le SDK inclut l'utilitaire Okta Connector Tester pour tester votre connecteur SCIM. Cela peut tester les connecteurs créés à l'aide du SDK Okta Provisioning Connector ou de tout connecteur/serveur SCIM personnalisé, sans se connecter à Okta et à Okta Provisioning Agent.

Consultez la section Tester les connecteurs SCIM pour l'approvisionnement local.

Déployer votre connecteur

Après avoir créé un connecteur et copié le fichier .war dans le répertoire webapps de Tomcat, référez-vous à la section Se connecter à un connecteur SCIM pour intégrer le nouveau connecteur. Cela permet de créer une intégration entre l'agent et le serveur SCIM que vous avez créé en utilisant le SDK via HTTPS. Pour finaliser la procédure, consultez la section Activer SSL.

Bien que vous puissiez utiliser la communication HTTP entre l'agent et le serveur SCIM, comme décrit dans la section Autoriser le protocole HTTP, le protocole recommandé est https.

Autoriser le protocole HTTP

L'utilisation de HTTP n'est pas recommandée. L'option HTTPS, plus sécurisée, est vivement recommandée.

  1. Modifiez configure_agent.sh.
  2. Recherchez la ligne qui contient echo Configuring Okta Provisioning agent.
  3. La ligne suivante enregistre l'agent d'approvisionnement. Pour activer HTTP, ajoutez -allowHttp true à la liste des arguments de ligne de commande. Insérez le caractère de poursuite de la ligne (\) si nécessaire pour inclure cet argument.

Activer SSL

Procédez comme suit pour prendre en charge SSL pour les connexions https :

  • Générez une clé pour le serveur SCIM et exportez un certificat
  • Importez le certificat dans le magasin de confiance de Okta Provisioning Agent.

Suivez les cinq étapes suivantes pour activer le protoco;e SSL à l'aide de certificats auto-signés. Pour améliorer la sécurité et utiliser des certificats signés par des tiers de confiance, vous pouvez importer ce type de certificat dans le magasin de confiance de l'Okta Provisioning Agent dans l'étape 5.

Étape 1 : générer une clé

Si votre serveur Tomcat est accessible via l'URL localhost, générez une clé à l'aide de la commande suivante :

keytool -genkey -alias scim_tom -keyalg RSA -keystore /root/scim_tomcat_keystore Entrez le mot de passe du keystore : Entrez de nouveau le nouveau mot de passe : Quels sont vos nom et prénom ? [Unknown]: localhost Quel est le nom de votre unité organisationnelle ? [Unknown]: IT Quel est le nom de votre organisation ? [Unknown]:MyCompany Quel est le nom de votre ville ou localité ? [Unknown]: sf Quel est le nom de votre État ou province ? [Unknown]: ca Quel est le code de pays à deux lettres pour cette unité ? [Unknown]: us Is CN=K0208, OU=eng, O=okta, L=sf, ST=ca, C=us correct? [no]: oui Entrez le mot de passe clé pour <scim_tom> (RETOUR si identique au mot de passe du keystore) :

Si votre serveur Tomcat est accessible via une adresse IP (par exemple, https://10.11.12.13:8443/), exécutez la commande suivante en utilisant keytool de Java 7 ou d'une version ultérieure.

$JAVA_HOME/bin/keytool -genkey -alias scim_tom -ext san=ip:10.11.12.13 -keyalg RSA -keystore /root/scim_tomcat_keystore

Cette commande doit être exécutée à partir d'une installation Java 7 ou ultérieure. Si votre variable d'environnement pour Java n'est pas JAVA_HOME, par exemple JAVA_7_HOME, remplacez-la à la place de JAVA_HOME dans la commande précédente.

Étape 2 : activez le protocole SSL pour les connexions HTTPS à Tomcat

Configurez le connecteur HTTPS pour activer SSL. Modifiez votre fichier de configuration Tomcat, qui se trouve normalement à l'emplacement suivant : $CATALNA_HOME/conf/server.xml. La configuration suivante active le protocole SSL, définit le port HTTPS sur 8443 et indique à Tomcat d'utiliser le keystore que vous avez créé lors de l'étape précédente (/root/scim_tomcat_keystore).

Copier
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
[] maxThreads="150" scheme="https" secure="true" <a id="x3">
clientAuth="false" sslProtocol="TLS"
keystoreFile="/root/scim_tomcat_keystore"
keystorePass="changeit" />

Étape 3 : lancez Tomcat et vérifiez que vous pouvez accéder au serveur via HTTPS.

Lancez Tomcat en suivant les instructions correspondant à votre version et à votre système d'exploitation. Par exemple, sous Linux, vous pouvez vous rendre dans $CATALNA_HOME/bin et exécuter ./catalina.sh start pour démarrer Tomcat.

Ouvrez un onglet de navigateur et saisissez l'adresse de votre serveur (par exemple, localhost). Une page Web s'affiche si Tomcat est en cours d'exécution.

Étape 4 : exportez le certificat public

keytool -export -keystore /root/scim_tomcat_keystore -alias scim_tom -file /root/scim_tomcat.cert Entrez le mot de passe keystore : Certificat stocké dans le fichier </root/scim_tomcat.cert>

Étape 5 : importez le certificat dans le magasin de confiance de l'Okta Provisioning Agent.

Importez le certificat dans Tomcat afin de permettre une connexion sécurisée entre ce dernier et le serveur SCIM. Exécutez la commande suivante sur la machine où est installé l'Okta Provisioning Agent.

/opt/OktaProvisioningAgent/jre/bin/keytool -import -file /root/scim_tomcat.cert -alias scim_tom -keystore /opt/OktaProvisioningAgent/jre/lib/security/cacerts

Étapes suivantes

Tester les connecteurs SCIM pour l'approvisionnement local

Rubriques liées

Messages SCIM pour l'approvisionnement local