Ein OAuth-Service-Provider ist ein benannter Satz von Konfigurationsoptionen für
OAuth. Die ID oder der Name des Providers
wird im URL eingehender Anforderungen für die Berechtigungs- und Tokenendpunkte angegeben.
Der Satz von Konfigurationsoptionen für diesen Provider wird verwendet, wenn die Anforderung verarbeitet wird.
Dieser Prozess ermöglicht einem Server mit einem Endpunktservlet die effektive Bereitstellung mehrerer
OAuth-Konfigurationen. Beispielsweise wird die URL
https://my.company.com:8021/oauth2/endpoint/photoShare/authorize
mit dem Satz von OAuth-Konfigurationsoptionen verarbeitet, die für den OAuth-Provider photoShare definiert sind.
Beispielsweise wird die URL https://my.company.com:8021/oauth2/endpoint/calendarAuthz/authorize
mit dem Satz von OAuth-Konfigurationsoptionen verarbeitet, die für den OAuth-Provider calendarAuthz definiert sind.
Informationen zu diesem Vorgang
Ein OAuth-Service-Provider wird mit dem Element oauthProvider
in der Datei server.xml definiert. Sie können einen OAuth-Service-Provider definieren,
indem Sie die Datei server.xml bearbeiten oder
indem Sie WebSphere Application
Server Development Tools for Liberty Profile verwenden. Diese Task beschreibt die Definition einer minimalen OAuth-Konfiguration.
Vorgehensweise
- Fügen Sie die Features oauth-2.0 und ssl-1.0 hinzu. OAuth ist ein sicheres Protokoll. Deshalb ist SSL erforderlich. Sie müssen im Liberty-Profil
mit dem Element keyStore ein Keystore-Kennwort für SSL angeben.
Es gibt kein Keystore-Standardkennwort.
<featureManager>
<feature>oauth-2.0</feature>
<feature>ssl-1.0</feature>
</featureManager>
- Konfigurieren Sie mit dem Element oauth-roles die Rollenzuordnung für die OAuth-Webanwendung. OAuth ist ein HTTP-basiertes Protokoll, und es wird eine Webanwendung für die Verarbeitung
der Berechtigungs- und Tokenendpunkte bereitgestellt.
Die Webanwendung wird automatisch erstellt und gestartet, wenn Sie das Feature
oauth-2.0 angeben.
Sie müssen jedoch die Rolle authenticated einem oder mehreren Benutzern, Gruppen oder Sondersubjekten zuordnen.
Eine weitere Rolle, clientManager, wird für die Verwaltung der Clientkonfiguration bereitgestellt, aber es ist
nicht erforderlich, diese Rolle zuzuordnen, damit die OAuth-Berechtigung funktioniert.
<oauth-roles>
<authenticated>
<user>testuser</user>
</authenticated>
</oauth-roles>
- Definieren Sie mit dem Element oauthProvider einen oder mehrere Provider. Der Provider
muss mindestens einen definierten Client haben.
Clients können mit den Elementen localStore und client lokal definiert werden.
Mit dem Element databaseStore können Clients auch in einer relationalen Datenbank definiert werden.
<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>
- Definieren Sie eine Benutzerregistry, entweder eine LDAP-Registry mit dem Feature ldapRegistry-3.0
und dem Konfigurationselement ldapRegistry oder eine Basisregistry durch Angabe
des Konfigurationselements basicRegistry.
<basicRegistry id="basic" realm="BasicRealm">
<user name="testuser" password="testuserpwd" />
</basicRegistry>
- Setzen Sie die Sicherheitseigenschaft allowFailOverToBasicAuth der Webanwendung auf
true.
<webAppSecurity allowFailOverToBasicAuth="true" />
Ergebnisse
Sie haben eine minimale OAuth-Konfiguration definiert.
Beispiel
Im Folgenden sehen Sie eine Beispieldatei
server.xml, die einen einfachen
OAuth-Provider mit einem einzigen Client definiert:
<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>