SQL-Anweisungen für persistenten OAuth-Service
WebSphere Application Server unterstützt den persistenten OAuth-2.0-Service, indem OAuth-Token und -Clients in einer Datenbank als persistent definiert werden. Mit persistenten OAuth-2.0-Services kann ein berechtigter Client nach einem Neustart der OAuth-Services auf den OAuth-2.0-Service zugreifen.
- Konfigurieren Sie den
OAuth-2.0-Service-Provider.
Die Schablone für die Providerkonfigurationsdatei mit dem Namen OauthConfigSample.xml enthält Beispielparameter für die Konfiguration eines JDBC-Datenbankspeichers (Java™ Database Connectivity) zur Registrierung von OAuth-Clients.
- Setzen Sie die folgenden Zeilen auf Kommentar:
<parameter name="oauth20.client.provider.classname" type="cc" customizable="false"> <value>com.ibm.ws.security.oauth20.plugins.BaseClientProvider</value> </parameter> <parameter name="oauth20.token.cache.classname" type="cc" customizable="false"> <value>com.ibm.ws.security.oauth20.plugins.BaseCache</value> </parameter> <parameter name="oauth20.token.cache.jndi.tokens" type="ws" customizable="false"> <value>services/cache/OAuth20MemTokenCache</value> </parameter> <parameter name="oauth20.token.cache.jndi.users" type="ws" customizable="false"> <value>services/cache/OAuth20MemTokenOwnerCache</value> </parameter>
- Entfernen Sie die Kommentarzeichen für die folgenden Zeilen:
<!-- Beispielparameter für JDBC-Datenbankspeicher --> <parameter name="oauth20.client.provider.classname" type="cc" customizable="false"> <value>com.ibm.ws.security.oauth20.plugins.db.CachedDBClientProvider</value> </parameter> <parameter name="oauth20.token.cache.classname" type="cc" customizable="false"> <value>com.ibm.ws.security.oauth20.plugins.db.CachedDBTokenStore</value> </parameter> <parameter name="oauthjdbc.JDBCProvider" type="ws" customizable="false"> <value>jdbc/oauthProvider</value> </parameter> <parameter name="oauthjdbc.client.table" type="ws" customizable="false"> <value>OAuthDBSchema.OAUTH20CLIENTCONFIG</value> </parameter> <parameter name="oauthjdbc.token.table" type="ws" customizable="false"> <value>OAuthDBSchema.OAUTH20CACHE</value> </parameter> <parameter name="oauthjdbc.CleanupInterval" type="ws" customizable="true"> <value>3600</value> </parameter> <parameter name="oauthjdbc.CleanupBatchSize" type="ws" customizable="true"> <value>250</value> </parameter> <parameter name="oauth20.db.token.cache.jndi.tokens" type="ws" customizable="false"> <value>services/cache/OAuth20DBTokenCache</value> </parameter> <parameter name="oauth20.db.token.cache.jndi.clients" type="ws" customizable="false"> <value>services/cache/OAuth20DBClientCache</value> </parameter>
- Setzen Sie die folgenden Zeilen auf Kommentar:
- Richten Sie eine Datenbank und eine Tabelle zum Speichern von
OAuth-Token und -Client ein.
- Erstellen Sie eine Datenbank für den persistenten OAuth-Service. Informationen zur Datenbankerstellung entnehmen Sie der Dokumentation des entsprechenden Anbieters. In diesem Abschnitt wird davon ausgegangen, dass die für OAuth erstellte Datenbank den Namen D:\oauth2db hat.
- Erstellen Sie zwei
OAuth-Tabellen entsprechend der Definition in den folgenden SQL-Anweisungen:
----- CREATE TABLES ----- CREATE TABLE OAuthDBSchema.OAUTH20CACHE ( LOOKUPKEY VARCHAR(256) NOT NULL, UNIQUEID VARCHAR(128) NOT NULL, COMPONENTID VARCHAR(256) NOT NULL, TYPE VARCHAR(64) NOT NULL, SUBTYPE VARCHAR(64), CREATEDAT BIGINT, LIFETIME INT, EXPIRES BIGINT, TOKENSTRING VARCHAR(2048) NOT NULL, CLIENTID VARCHAR(64) NOT NULL, USERNAME VARCHAR(64) NOT NULL, SCOPE VARCHAR(512) NOT NULL, REDIRECTURI VARCHAR(2048), STATEID VARCHAR(64) NOT NULL ); CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG ( COMPONENTID VARCHAR(256) NOT NULL, CLIENTID VARCHAR(256) NOT NULL, CLIENTSECRET VARCHAR(256), DISPLAYNAME VARCHAR(256) NOT NULL, REDIRECTURI VARCHAR(2048), ENABLED INT ); ----- Bedingungen hinzufügen ----- ALTER TABLE OAuthDBSchema.OAUTH20CACHE ADD CONSTRAINT PK_LOOKUPKEY PRIMARY KEY (LOOKUPKEY); ALTER TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG ADD CONSTRAINT PK_COMPIDCLIENTID PRIMARY KEY (COMPONENTID,CLIENTID); ----- Indizes erstellen ----- CREATE INDEX OAUTH20CACHE_EXPIRES ON OAUTHDBSCHEMA.OAUTH20CACHE (EXPIRES ASC);
- Konfigurieren Sie
WebSphere Application
Server.
Konfigurieren Sie die Datenquelle von WebSphere Application Server. Als JNDI-Name für die Datenquelle muss jdbc/oauthProvider angegeben werden. Der JNDI-Name muss mit dem Wert des Parameters oauthjdbc.JDBCProvider in der Providerkonfigurationsdatei übereinstimmen. Wählen Sie einen Datenbanknamen, der mit dem im ersten Schritt definierten Namen übereinstimmt, z. B. D:\oauth2db.
Die Konfiguration von DB2 oder Derby für persistente OAuth-Services sind enthalten. Sie können sie als Beispielschablone verwenden, um weitere Datenbanken zu konfigurieren.
- Fügen Sie die registrierten
OAuth-Clients der Datenbank hinzu.
Damit ein Client in einer Datenbank als persistent definiert ist, müssen Sie den Client in der Datenbank speichern. Mit den folgenden SQL-Anweisungen werden die OAuth-clients dbclient01 und dbclient02 einer Derby-Datenbank hinzugefügt.
CONNECT 'jdbc:derby:D:\oauth2db'; INSERT INTO OAuthDBSchema.OAUTH20CLIENTCONFIG VALUES ( 'OAuthConfigDerby', 'dbclient01', 'secret', 'dbclient01', 'http://localhost:9080/oauthclient/redirect.jsp', 1 ), ( 'OAuthConfigDerby', 'dbclient02', 'secret', 'dbclient02', 'http://localhost:9080/oauthclient/redirect.jsp', 1 ); DISCONNECT CURRENT;