Registro de clientes OAuth
Un cliente o una aplicación de servicio de terceros OAuth se deben registrar a sí mismos con el proveedor de servicios OAuth2 de WebSphere Application Server. Los clientes registrados se almacenan como un archivo XML o en una tabla de base de datos.
Para almacenar clientes registrados como un archivo XML, debe crear un archivo XML denominado base.clients.xml. Este archivo XML debe colocarse bajo el directorio oauth20 en el directorio de célula o el directorio de nodos de WebSphere Application Server. El archivo de ejemplo base.clients.xml se encuentra en el directorio de propiedades de la instalación de WebSphere Application Server.
/*Tabla de clientes*/
CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG (
COMPONENTID VARCHAR(256) NOT NULL, /*Nombre del proveedor OAuth, coincide con el de config.xml*/
CLIENTID VARCHAR(256) NOT NULL, /*ID del cliente*/
CLIENTSECRET VARCHAR(256), /*Secreto de cliente*/
DISPLAYNAME VARCHAR(256) NOT NULL, /*Nombre de visualización del cliente*/
REDIRECTURI VARCHAR(2048), /*URI de redirección del cliente*/
ENABLED INT /*int*/
);
Después de crear el cliente almacenando archivos y tablas, puede añadir , suprimir o modificar directamente un cliente. También puede utilizar el Mbean de WebSphere Application Server o API de programación para gestionar clientes.
import com.ibm.ws.security.oauth20.plugins.BaseClientProvider;
import com.ibm.ws.security.oauth20.plugins.BaseClient;
import com.ibm.ws.security.oauth20.api.OAuth20Provider;
import com.ibm.ws.security.oauth20.api.OAuth20ProviderFactory;
import com.ibm.ws.security.oauth20.plugins.db.CachedDBClientProvider;
OAuth20Provider provider = OAuth20ProviderFactory.getOAuth20Provider("<<nombre_proveedor>>");
OAuthComponentConfiguration oauthconfig = provider.getConfiguration();
CachedDBClientProvider clientProvider = new CachedDBClientProvider(); //si se utiliza una base de datos para almacenar clientes
//BaseClientProvider clientProvider = new BaseClientProvider(); //si se utiliza un archivo XML para almacenar clientes
clientProvider.init(oauthconfig);
// sustituir << .... >> por la serie deseada
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
"<<ID_cliente>>",
"<<secreto_cliente>>",
"<<nombre_visualización_cliente>>",
"<<URI_redirección>>",
true);
//añadir un cliente nuevo
clientProvider.put(newClient);
//suprimir un cliente
clientProvider.delete("<<ID_cliente>>");
//consultar todos los clientes registrados
Collection<BaseClient> clients = clientProvider.getAll();
for (BaseClient client : clients) {
String client_display_name = client.getDisplayName();
String client_id = client.getClientId();
String redirect_uri = client.getRedirectUri();
}
En el ejemplo siguiente se muestra código de ejemplo para la gestión de clientes utilizando la API de MBean: //get OAuth client mBean OAuth20ClientMBean
ObjectName objName = new ObjectName ("WebSphere:type=OAuth20ClientMBean,*");
AdminClient adminClient = ....;
// añadir un cliente nuevo
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
"<<<<ID_cliente>>",
"<<secreto_cliente>>",
"<<nombre_visualización_cliente>>",
"<<URI_redirección>>",
true);
adminClient.invoke(objName,
"addClient",
new Object[]{newClient},
new String[]{newClient.getClass().getName()});
//suprimir un cliente por ID de cliente
adminClient.invoke(objName,
"removeClient",
new Object[]{providerName, "<<ID_cliente>>"},
new String[]{providerName.getClass().getName(),
clientName.getClass().getName()});