Configurez un flux d'octroi de mot de passe pour les ressources protégées par le serveur d'autorisation Liberty OAuth 2.0 à l'aide du flux d'octroi de mot de passe.
Procédure
-
Configurez une app cliente sur Liberty.
-
Créez une app OAuth 2.0 sur Liberty. Pour mettre en place un fournisseur OAuth 2.0 de test, suivez les instructions disponibles à l'adresse https://www.ibm.com/developerworks/websphere/techjournal/1305_odonnell2/1305_odonnell2.html.
-
Notez les paramètres suivants.
- Le nom du fournisseur OAuth2.
DemoProvider dans cet exemple.
- ID et mot de passe des informations d'identification de l'utilisateur.
test1/ test1, test2/test2 ou test3/test3 dans cet exemple.
- ID et mot de passe des informations d'identification du client.
LibertyRocks/AndMakesConfigurationEasy dans cet exemple.
- Le nom d'hôte et le port de votre fournisseur d'authentification OAuth 2.0. Le nom d'hôte
www.myremotesite.com:9443 dans cet exemple.
-
Fournissez les clés SSL valides du serveur Liberty pour le proxy Ajax.
-
Connectez-vous à la console d'administration WebSphere Application Server du proxy.
-
Sélectionnez et .
-
Cliquez sur le fichier de clés certifiées utilisé par le serveur Portal. En fonction de votre configuration et de votre topologie de sécurité, il peut s'agir de
NodeDefaultTrustStore ou de CellDefaultTrustStore.
-
Dans la section Propriétés supplémentaires, sélectionnez
Signer Certificates.
-
Cliquez sur Récupérer à partir du port.
-
Saisissez www.myremotesite.com en tant que valeur d'hôte et 9443 en tant qu'adresse de port, puis saisissez un nom d'alias comme my_liberty. Cliquez ensuite sur Récupérer les informations du signataire.
-
Le certificat du signataire est chargé dans votre console d'administration WebSphere Application Server. Cliquez sur OK pour ajouter le certificat à votre configuration WebSphere Application Server, puis cliquez sur Enregistrer pour ajouter les paramètres au niveau de la configuration maître.
-
Créez une entrée d'emplacement d'accréditation pour les informations d'identification de l'utilisateur et du client.
-
Connectez-vous au portail en tant qu'utilisateur administrateur.
-
Cliquez sur Ouvrir l'administrateur de portail, puis sélectionnez Coffre d'accréditation dans la section Accès.
-
Cliquez sur Créer un emplacement de coffre. Saisissez MyClientCvSlot pour le nom de l'emplacement. Sélectionnez la ressource de coffre que vous souhaitez utiliser, ou créez une nouvelle ressource de coffre. Sélectionnez le paramètre Le coffre est partagé. Utilisez la clé du client en tant qu'ID utilisateur partagé, et définissez le mot de passe du client que vous avez noté à l'étape 1b. Cliquez sur OK pour créer le nouvel emplacement de coffre.
-
Cliquez à nouveau sur Créer un emplacement de coffre. Saisissez MyUserCvSlot pour le nom de l'emplacement. Sélectionnez la ressource de coffre que vous souhaitez utiliser, ou créez une nouvelle ressource de coffre. Sélectionnez le paramètre Le coffre est partagé. Saisissez l'ID utilisateur en tant qu'ID utilisateur partagé, puis définissez le mot de passe associé que vous avez noté à l'étape 1b. Cliquez sur OK pour créer le nouvel emplacement de coffre.
-
Créez une stratégie de connexion HTTP sortante pour la nouvelle ressource.
-
Créez le document XML suivant à l'aide d'un éditeur XML ou texte.
<?xml version="1.0" encoding="UTF-8"?>
<proxy-rules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.ibm.com/xmlns/prod/sw/http/outbound/proxy-config/2.0">
<variables>
<dynamic-policy name="liberty-idp.urls">
<value>https://www.myremotesite.com/*</value>
</dynamic-policy>
</variables>
<mapping contextpath="/myproxy" url="*">
<policy name="liberty-idp.policy" url="{$liberty-idp.urls}" >
<actions>
<method>GET</method>
<method>PUT</method>
<method>POST</method>
</actions>
<cookie-rule>
<cookie>MyAuthCookieForPasswordFlow</cookie>
<scope>user</scope>
<handling>store-in-session</handling>
</cookie-rule>
<meta-data>
<name>SSO_OAUTH2_IDP</name>
<value>liberty-idp</value>
</meta-data>
<meta-data>
<name>liberty-idp.IDP_PROTOCOL</name>
<value>https</value>
</meta-data>
<meta-data>
<name>liberty-idp.IDP_HOST</name>
<value>www.myremotesite.com</value>
</meta-data>
<meta-data>
<name>liberty-idp.IDP_PORT</name>
<value>9443</value>
</meta-data>
<meta-data>
<name>liberty-idp.IDP_URI</name>
<value>/oauth2/endpoint/DemoProvider/token</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_NAME.1</name>
<value>GRANT_TYPE</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_VALUE.1</name>
<value>password</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_NAME.2</name>
<value>CLIENT_ID</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_VALUE.2</name>
<value>{$$MyClientCvSlot}</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_NAME.3</name>
<value>CLIENT_CRED</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_VALUE.3</name>
<value>{$$MyClientCvSlot}</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_NAME.4</name>
<value>USER_ID</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_VALUE.4</name>
<value>{$$MyUserCvSlot}</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_NAME.5</name>
<value>USER_CRED</value>
</meta-data>
<meta-data>
<name>liberty-idp.PARAM_VALUE.5</name>
<value>{$$MyUserCvSlot}</value>
</meta-data>
<meta-data>
<name>liberty-idp.IDP_AUTH_COOKIE.1</name>
<value>MyAuthCookieForPasswordFlow</value>
</meta-data>
</policy>
</mapping>
</proxy-rules>
-
Modifiez les valeurs des paramètres
liberty-idp.urls, liberty-idp.IDP_HOST, liberty-idp.IDP_PORT et liberty-idp.IDP_URI.
-
Enregistrez le document dans un fichier. Par exemple, enregistrez le fichier sous
/tmp/global_oauth_update.xml.
-
Appliquez la configuration à la configuration globale des connexions HTTP sortantes. Exécutez la tâche suivante pour exporter la configuration d'une connexion HTTP sortante vers un document XML.
AIX: ./ConfigEngine.sh update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_update.xml \
-DWasPassword=password -DPortalAdminPwd=password
HP-UX: ./ConfigEngine.sh update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_update.xml \
-DWasPassword=password -DPortalAdminPwd=password
IBM i: ConfigEngine.sh update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_update.xml \
-DWasPassword=password -DPortalAdminPwd=password
Linux: ./ConfigEngine.sh update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_update.xml \
-DWasPassword=password -DPortalAdminPwd=password
Solaris: ./ConfigEngine.sh update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_pdate.xml \
-DWasPassword=password -DPortalAdminPwd=password
Windows: ConfigEngine.bat update-outbound-http-connection-config -DconfigFileName=/tmp/global_oauth_update.xml \
-DWasPassword=password -DPortalAdminPwd=password
La connexion OAuth2 est maintenant prête à l'emploi.
-
Testez la connexion. Pour tester la connexion à la ressource dropbox via OAuth2, vous pouvez télécharger une ressource Twitter, comme le fil Twitter, à l'aide de ses API REST. Exécutez les deux commandes Curl suivantes pour tester la connexion Twitter.
curl -c pc.jar "http://dx_host.com/wps/j_security_check?\
j_username=portal_user&j_password=portal_pwd"
curl -b pc.jar \ "http://dx_host.com/wps/myproxy/https/www.myremotesite.com:9443/testpage" >testpage.html
Où
- La variable dx_host.com correspond au nom d'hôte et au numéro de port du serveur Portal.
- Les variables portal_user et portal_pwd correspondent aux informations d'identification de portail que vous souhaitez utiliser.
- La variable
www.myremotesite.com:9443 correspond au nom d'hôte et au numéro de port du serveur Liberty.