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
|