Un proveedor de servicios OAuth es un conjunto con nombre de opciones de configuración para OAuth. El id o el nombre del proveedor se especifica en el URL de las solicitudes de entrada para los puntos finales de señal y autorización. El conjunto de opciones de configuración para dicho proveedor se utiliza cuando se maneja la solicitud. Este proceso permite a un servidor con un servlet de punto final proporcionar de forma eficaz varias configuraciones de OAuth.
Por ejemplo, el URL
https://my.company.com:8021/oauth2/endpoint/photoShare/authorize se
maneja utilizando el conjunto de opciones de configuración de OAuth que se ha definido
para el proveedor OAuth denominado photoShare.
El URL
https://my.company.com:8021/oauth2/endpoint/calendarAuthz/authorize se
maneja utilizando el conjunto de opciones de configuración de OAuth que se ha definido
para el proveedor OAuth denominado calendarAuthz.
Acerca de esta tarea
Un proveedor de servicios OAuth se define con el elemento oauthProvider en el archivo server.xml. Puede definir un proveedor de servicios OAuth editando el archivo server.xml o utilizando las herramientas del desarrollador de WebSphere Application Server para Liberty. Esta tarea describe cómo definir una configuración OAuth mínima.
Procedimiento
- Añada las características oauth-2.0 y ssl-1.0. OAuth es un protocolo seguro, por lo que se necesita SSL. En Liberty, debe proporcionar una contraseña de almacén de claves para SSL utilizando el elemento keyStore.
No hay ninguna contraseña de almacén de claves predeterminada.
<featureManager>
<feature>oauth-2.0</feature>
<feature>ssl-1.0</feature>
</featureManager>
- Configure la correlación de roles para la aplicación web de OAuth utilizando el
elemento oauth-roles. OAuth es un protocolo basado en HTTP y se suministra una aplicación web para manejar los puntos finales de señal y autorización. La aplicación web está incorporada y se inicia automáticamente cuando especifica la característica oauth-2.0.
No obstante, debe correlacionar el rol authenticated con uno o varios usuarios, grupos o sujetos especiales. Se suministra otro rol, clientManager, para gestionar la configuración del cliente, pero no es necesario correlacionar ese rol para que funcione la autorización OAuth.
<oauth-roles>
<authenticated>
<user>testuser</user>
</authenticated>
</oauth-roles>
- Defina uno o varios proveedores con el elemento oauthProvider. El proveedor debe tener al menos un cliente definido. Los clientes pueden definirse localmente con los elementos localStore y client.
Los clientes también pueden definirse en una base de datos relacional con el elemento 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>
- Defina un registro de usuarios, ya sea un registro
LDAP mediante la especificación de la característica ldapRegistry-3.0 y
el elemento de configuración ldapRegistry o ya sea un registro básico
mediante la especificación del elemento de configuración basicRegistry.
<basicRegistry id="basic" realm="BasicRealm">
<user name="testuser" password="testuserpwd" />
</basicRegistry>
- Establezca la propiedad de seguridad de aplicación web allowFailOverToBasicAuth en true.
<webAppSecurity allowFailOverToBasicAuth="true" />
Resultados
Ha definido una configuración OAuth mínima.
Ejemplo
El ejemplo siguiente muestra un archivo
server.xml de
ejemplo que define un proveedor OAuth simple con un cliente:
<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>