jueves, 20 de octubre de 2016

Control permanente para autenticarse como otro usuario

Según mi experiencia, una de las "pérdidas" más incomprensibles que sufrimos al migrar a SharePoint 2013 desde SharePoint 2010 es que el usuario pierde la capacidad de autenticarse como otra persona.

En terminales compartidos, como salas de formación, puede llegar a ser un verdadero calvario tener que explicar constantemente a los usuarios que para realizar dicho proceso, deben añadir a la URL del navegador la extensión _layouts/closeConnection.aspx?loginasanotheruser=true (ver post relacionado).

Esta operación manual retorna al nuevo usuario a la raíz del site collection, donde puede ser que no tenga permisos de acceso, y es bastante engorroso encontrarse con un error de acceso no autorizado tras cada re-login.

Para hacerle la vida más fácil al usuario, y tener una solución permanente de simple uso y acceso, recomiendo fehacientemente añadir el control en el menú de usuario, tal y como se muestra en la siguiente imagen.


La solución es relativamente sencilla, siempre que tengáis acceso a los servidores de SharePoint.

Se trata de añadir en el fichero "\15\TEMPLATE\CONTROLTEMPLATES\Welcome.ascx"  el siguiente código justo antes del control que tiene el ID "ID_RequestAccess" (Editar con Notepad):

  <SharePoint:MenuItemTemplate runat="server" ID="ID_LoginAsDifferentUser" 
    Text="<%$Resources:wss,personalactions_loginasdifferentuser%>" 
    Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>"
    MenuGroupId="100" 
    Sequence="100" 
    UseShortId="true" 
    />


El fichero resultante debería tener un aspecto como el siguiente:


Guardamos el resultado y aplicamos lo mismo a todos los servidores frontales (WFE) que tengamos en nuestra granja.

Si no queremos aplicarlo en toda nuestra granja, y tan solo lo necesitamos en un site/site collection específico, siempre podemos añadirlo a nuestra master page, añadiendo un control bajo la etiqueta <div id="suiteBarButtons"> y copiando el siguiente código entre los tags <SharePoint:FeatureMenuTemplate ....> y </SharePoint:FeatureMenuTemplate>


<SharePoint:MenuItemTemplate runat="server" id="MenuItem_SignInAsDifferentUser"
         Text="SignIn As Different User"
         Description="To log in as a different user"
         MenuGroupId="200"
         Sequence="250"
         UseShortId="true"
         ClientOnClickNavigateUrl="~siteLayouts/closeConnection.aspx?loginasanotheruser=true"
         PermissionMode="All"
/>


El resultado será el mismo, pero el ámbito estará limitado a donde aplique dicha .master page.

Con cualquiera de las dos soluciones, el control de "Sign in as different user" debería aparecer en el menú de control de usuario. Es multi-language por defecto y redirige al mismo sitio y página desde la que se efectúa la operación, así que es perfecto para nuestros propósitos.

Al ver los resultados, uno no puede evitar preguntarse: ¿Por qué no está incluido OOB? Pero todos sabemos que a Microsoft les encanta darnos trabajo a los consultores de SharePoint (cosa que, personalmente, debo agradecerles, claro está...).

En fin,  ¡Eso es todo por hoy amigos!

No hay comentarios: