Un fournisseur de service OAuth est un ensemble nommé d'options de configuration pour OAuth. L'id ou le nom du fournisseur est spécifié dans l'adresse URL des demandes entrantes des noeuds finaux de jeton et d'autorisation. L'ensemble d'options de configuration de ce fournisseur est utilisé lorsque la demande est traitée. Ce processus permet à un serveur comportant un servlet de noeud final de fournir plusieurs configurations OAuth de manière efficace.
Par exemple, l'adresse URL https://my.company.com:8021/oauth2/endpoint/photoShare/authorize est traitée à l'aide de l'ensemble d'options de configuration OAuth qui sont définies pour le fournisseur OAuth appelé photoShare.
L'adresse URL https://my.company.com:8021/oauth2/endpoint/calendarAuthz/authorize est traitée à l'aide de l'ensemble d'options de configuration OAuth qui sont définies pour le fournisseur OAuth appelé calendarAuthz.
Pourquoi et quand exécuter cette tâche
Un fournisseur de services OAuth est défini avec l'élément oauthProvider dans le fichier server.xml. Vous pouvez définir un fournisseur de services OAuth en éditant le
fichier server.xml oou à l'aide de
WebSphere Application
Server Development Tools pour le profil Liberty. Cette tâche explique comment définir une configuration OAuth minimale.
Procédure
- Ajoutez les fonctions oauth-2.0 et ssl-1.0. OAuth est un protocole sécurisé ; par conséquent, SSL est requis. Dans le profil Liberty, vous devez indiquer un mot de passe de fichier de clés pour SSL en utilisant l'élément keyStore.
Il n'existe pas de mot de passe de fichier de clés par défaut.
<featureManager>
<feature>oauth-2.0</feature>
<feature>ssl-1.0</feature>
</featureManager>
- Configurez le mappage de rôle pour l'application Web OAuth en utilisant l'élément oauth-roles. OAuth est un protocole reposant sur HTTP et une application Web est fournie pour le traitement des noeuds finaux de jeton et d'autorisation. L'application Web est intégrée et démarrée automatiquement lorsque
vous spécifiez la fonction oauth-2.0.
Toutefois, vous devez mapper le rôle authenticated à un ou plusieurs utilisateurs, groupes ou sujets spéciaux. Un autre rôle, clientManager, est fourni pour la gestion de la configuration client, mais il n'est pas nécessaire de le mapper pour que l'autorisation OAuth fonctionne.
<oauth-roles>
<authenticated>
<user>testuser</user>
</authenticated>
</oauth-roles>
- Définissez un ou plusieurs fournisseurs avec l'élément oauthProvider. Un client au moins doit être défini pour le fournisseur. Les clients peuvent être définis localement avec les éléments localStore et client.
Ils peuvent aussi être définis dans une base de données relationnelle avec l'élément databaseStore.
<oauthProvider id="SampleProvider" filter="request-url%=ssodemo">
<localStore>
<client name="client01" secret="{xor}LDo8LTor"
displayname="Test client number 1"
redirect="http://localhost:1234/oauthclient/redirect.jsp"
enabled="true" />
</localStore>
</oauthProvider>
- Définissez un registre
d'utilisateurs (un registre LDAP en spécifiant la fonction
ldapRegistry-3.0 et l'élément de configuration
ldapRegistry ou un registre de base en spécifiant
l'élément de configuration basicRegistry).
<basicRegistry id="basic" realm="BasicRealm">
<user name="testuser" password="testuserpwd" />
</basicRegistry>
- Associez la propriété de sécurité d'application Web allowFailOverToBasicAuth à true.
<webAppSecurity allowFailOverToBasicAuth="true" />
Résultats
Vous avez défini une configuration OAuth minimale.
Exemple
L'exemple suivant illustre un fichier
server.xml qui définit un fournisseur OAuth simple possédant un client :
<server>
<featureManager>
<feature>oauth-2.0</feature>
<feature>ssl-1.0</feature>
</featureManager>
<keyStore password="keyspass" />
<oauth-roles>
<authenticated>
<user>testuser</user>
</authenticated>
</oauth-roles>
<oauthProvider id="SampleProvider" filter="request-url%=ssodemo">
<localStore>
<client name="client01" secret="{xor}LDo8LTor"
displayname="Test client number 1"
redirect="http://localhost:1234/oauthclient/redirect.jsp"
enabled="true" />
</localStore>
</oauthProvider>
<webAppSecurity allowFailOverToBasicAuth="true" />
<basicRegistry id="basic" realm="BasicRealm">
<user name="testuser" password="testuserpwd" />
</basicRegistry>
</server>