He estado trabajando en un escenario de integración que incluye las siguientes herramientas:
- WSO2 Identity Server 5.0.0 como key manager y gestión de usuarios.
- WSO2 API Manager 1.9.1 para la gestión de las APIs.
La integración se hace bastante rápida y existe un
manual bien detallado al respecto en la documentación oficial.
Para ver el uso de las APIs quise integrar además el WSO2 Dashboard Application Server 3.0.0 a esta fiesta de herramientas así que me fui al
manual del WSO2 API Manager y seguí los pasos descritos.
Al intentar acceder al Admin Dashboard con las credenciales por defecto admin/admin me topo que no me permite autenticarme. Pruebo autenticarme en el WSO2 IS y funciona, en el DAS también funciona, en el Publisher y en el Store pues también funciona, así que ya es algo extraño.
Activo el modo debug y a bucear en los logs y esto es lo que me encuentro.
Invocación del WSO2 DAS al WSO2 IS para autenticar al usuario vía servicios web:
Request:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:aut="http://authentication.services.core.carbon.wso2.org">
<soap:Header/>
<soap:Body>
<aut:login>
<aut:username>admin</aut:username>
<aut:password>admin</aut:password>
<aut:remoteAddress>localhost</aut:remoteAddress>
</aut:login>
</soap:Body>
</soap:Envelope>
Response:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ns:loginResponse xmlns:ns="http://authentication.services.core.carbon.wso2.org">
<ns:return>true</ns:return>
</ns:loginResponse>
</soapenv:Body>
</soapenv:Envelope>
Invocación para obtener el listado de roles del usuario y validar si se le permite el acceso:
Request:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ser:getRoleListOfUser xmlns:ser="http://service.ws.um.carbon.wso2.org">
<ser:userName>admin</ser:userName>
</ser:getRoleListOfUser>
</soapenv:Body>
</soapenv:Envelope>
Response:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ns:getRoleListOfUserResponse xmlns:ns="http://service.ws.um.carbon.wso2.org"
>
<ns:return>Internal/admin</ns:return>
<ns:return>Internal/subscriber</ns:return>
<ns:return>Internal/WSO2.ORG_admin_DefaultApplication_PRODUCTION</ns:return>
<ns:return>Internal/WSO2.ORG_admin_DefaultApplication_SANDBOX</ns:return>
<ns:return>Internal/everyone</ns:return>
</ns:getRoleListOfUserResponse>
</soapenv:Body>
</soapenv:Envelope>
Como pueden apreciar el listado de roles que se devuelve es el siguiente:
- Internal/admin
- Internal/subscriber
- Internal/WSO2.ORG_admin_DefaultApplication_PRODUCTION
- Internal/WSO2.ORG_admin_DefaultApplication_SANDBOX
- Internal/everyone
Cuando reviso el fichero donde se definen los roles con permito a admin-dashboard, el fichero site.json aparece lo siguiente:
Roles permitidos:
{
"theme" : {
"base" : "default",
"subtheme" : "modern"
},
"context" : "/admin-dashboard",
"request_url":"READ_FROM_REQUEST",
"tasksPerPage": 10,
"allowedRole":"admin",
"allowedRoles":"admin,subscriber",
"workflows":{
"applicationWorkFlowServerURL": "https://localhost:9446/services/",
"subscriptionWorkFlowServerURL": "https://localhost:9446/services/",
"signupWorkFlowServerURL": "https://localhost:9446/services/",
"appRegistrationWorkFlowServerURL": "https://localhost:9446/services/"
},
"ssoConfiguration" : {
"enabled" : "false",
"issuer" : "API_WORKFLOW_ADMIN",
"identityProviderURL" : "https://localhost:9448/samlsso",
"keyStorePassword" : "",
"identityAlias" : "",
"responseSigningEnabled":"true",
"keyStoreName" :""
}
}
Tuve que adicionar el rol Internal/admin al listado de allowedRoles para que mediera acceso a la aplicación.
De esa manera ya tuve acceso y pude terminar la integración con el DAS. En próximas entradas estaré posteando la integración entre estas 3 herramientas.
Espero les sea de utilidad.
WSO2 Data Service Server NPE con REST y JSON.