lunes, 11 de enero de 2016

WSO2 DAS: fallo de autenticación en admin-dashboard

image

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:
  • admin
  • subscriber
{
    "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.

1 comentario:

  1. Swiss-gs.com oferta servicios alojamiento en la nube y servidores dedicados en Latinoamerica. Publica ilimitada a 1Gb/s sin costos adicionales.

    See more:- Servidores Dedicados Latinoamerica

    ResponderEliminar