Sentencias SQL para el servicio OAuth persistente
WebSphere Application Server da soporte al servicio OAuth 2.0 mediante la persistencia de señales y clientes OAuth en una base de datos. Con los servicios OAuth 2.0 persistentes, un cliente autorizado puede acceder al servicio OAuth 2.0 después de que se reinicien los servicios OAuth.
- Configure el proveedor de servicios OAuth 2.0.
El archivo de configuración del proveedor de plantilla OauthConfigSample.xml contiene parámetros de ejemplo para configurar un almacén de base de datos Java™ Database Connectivity (JDBC) para registrar clientes de OAuth.
- Marque como comentario las líneas siguientes:
<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>
- Descomente las líneas siguientes:
<!-- Parámetros de ejemplo para almacenes de base de datos JDBC --> <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>
- Marque como comentario las líneas siguientes:
- Configure una base de datos y una tabla para almacenar la señal y el cliente de OAuth.
- Cree una base de datos para el servicio OAuth persistente. Consulte la documentación del proveedor para la creación de la base de datos. En este tema, se presupone que el nombre de la base de datos que ha creado para OAuth es D:\oauth2db.
- Crear dos tablas de OAuth tal como se define en las siguientes sentencias de SQL:
----- CREAR TABLAS ----- 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 ); ----- AÑADIR RESTRICCIONES ----- ALTER TABLE OAuthDBSchema.OAUTH20CACHE ADD CONSTRAINT PK_LOOKUPKEY PRIMARY KEY (LOOKUPKEY); ALTER TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG ADD CONSTRAINT PK_COMPIDCLIENTID PRIMARY KEY (COMPONENTID,CLIENTID); ----- CREAR ÍNDICES ----- CREATE INDEX OAUTH20CACHE_EXPIRES ON OAUTHDBSCHEMA.OAUTH20CACHE (EXPIRES ASC);
- Configure WebSphere Application
Server.
Configure el origen de datos de WebSphere Application Server. Debe establecer el nombre JNDI del origen de datos de modo que sea jdbc/oauthProvider. El nombre JNDI debe coincidir con el valor del parámetro oauthjdbc.JDBCProvider del archivo de configuración del proveedor. Elija un nombre de base de datos de modo que coincida con el de la que ha creado en el primer paso, por ejemplo, D:\oauth2db.
Se incluyen las configuraciones de DB2 o Derby para los servicios persistentes de OAuth. Puede utilizarlas como plantilla de ejemplo para configurar otras bases de datos.
- Añadas los clientes de OAuth registrados a la base de datos.
Para que un cliente persista en una base de datos, debe guardar el cliente en la base de datos. Las siguientes sentencias de SQL añaden los clientes de OAuth dbclient01 y dbclient02 a una base de datos Derby:
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;