PAPI Archivos

The PAPI authentication and authorization framework

PAPI@LISTSERV.REDIRIS.ES

Opciones: Vista Clásica

Use Monospaced Font
Por defecto enseñar Text Part
Mostrar todas las cabeceras de correo

Tema: [<< Primero] [< Prev] [Siguiente >] [Último >>]

Print Responder
Luis Meléndez <[log in para visualizar]>
Sat, 26 Jun 2010 19:55:15 +0200
text/plain (102 lines)
El 26/06/2010 18:17, Sergio Gómez Bachiller escribió:
> Si es una aplicación en c++,, entiendo que es un CGI.
>
> Lo que necesitáis es una nueva página que cree la cookie que necesita
> vuestra aplicación. Esa página puede estar en PHP y protegida con
> mod_papi o con phpPoa.
>
> El portal de entrada será esa nueva página, que irá al GPoA/AS a
> identificar al usuario. Cuando regrese con la identificación, la página
> creara la cookie para vuestro CGI y hará un redirect para cargarlo. Como
> ya tiene la cookie que necesita, entiendo que no debería haber problema.
>
> Espero que se entienda lo que quiero decir,
>
> Un saludo.
>
> Sergio.
>
>
> On Sat, 2010-06-26 at 16:31 +0200, Agustin Lopez wrote:
>    
>> Hola!
>>
>> Estoy pensando en validar con PAPI una aplicación web
>> nuestra escrita en C++. En ésta, el usuario hace un login
>> con un formulario user/pw y se crea un cookie que será el que
>> sirve para validar el resto de las páginas que se pidan hasta el
>> logout, donde se borra el cookie. En principio no sería conveniente
>> usas proxies de reescritura, por lo menos para toda la aplicación.
>>
>> ¿Cuál sería el mejor modo de PAPIzar esta aplicación?
>>
>> Saludos,
>> Agustín
>>      

Hola voy a proponer otra forma, que es como esta protegida 
http://consigna.uco.es
Si no hay que proteger el simple acceso a la aplicacion sino a parte de 
sus funciones
(por ejemplo se puede entrar, hacer algo pero para poder acceder a todo 
hay que
autenticarse) puedes sustituir el formulario login/password por un boton 
o enlace 'Login'
que fuerza la autenticacion PAPI. Esta forma de funcionamiento se llama 
'lazy' y la
soporta mod_papi pero no la version mod_perl (no se si alguna version 
moderna lo
hace).
Proteges el Location de tu aplicacion con mod_papi configurado en modo 
'lazy' y al
pinchar en Login, rediriges. Si vuelve ya autenticado, mod_papi te habra 
definido
$_SERVER['REMOTE_USER']. Por tanto una de las primeras cosas que debe hacer
tu aplicacion es ver si esa variable tiene valor y si es asi, considerar 
que ya esta
autenticado. No haria falta que mantengas cookies locales. Si lo haces, 
al pinchar el
usuario en 'logout' no basta con borrarlas, porque puede volver a 
pinchar en 'Login'
y volveria a entrar sin pedirle usuario/clave por las cookies de PAPI. 
El boton de
logout debe forzar el logout de PAPI para que no pase eso.

La config. es algo como:

<Location /cgi-bin/XXX>
     AuthType PAPI
     PAPILazySession On
     PAPIRemoteUserAttribute ePTI   # El atributo de PAPI del que sacar 
'REMOTE_USER'
     Require valid-user
     PAPIServiceID XXX_svcid
    ...
     PAPIGPoAURL ...
</Location>

Y en la aplicacion (Consigna es PHP pero es parecido):

     if (!array_key_exists('REMOTE_USER',$_SERVER)) {
         header("Location: " . <URL-de-tu-aplicacion>.
             "/PAPI/cookie_handler.cgi?target=" .
             urlencode($GLOBALS["script_name"]));
         exit;
     }

   // Aqui esta autenticado, solo algo 'superior' (mod_papi) ha podido 
poner $SERVER['REMOTE_USER']
   ...

Un saludo

P.D.: Disculpad la ausencia de acentos, mi PC tiene un problema con ellos...


-- 
"If you tolerate this, then your children will be next"

Luis Meléndez
Universidad de Córdoba - Servicio de Informática - Sistemas
Tel: +34 957 211022

ATOM RSS1 RSS2