implementación en PHP del descubrimiento IdP OpenID basa?
-
11-09-2019 - |
Pregunta
Google tiene un usuario muy agradable de usar inicio de sesión OpenID federada con el descubrimiento de punto final automagic:
Esto se implementa en Servlets Java, hay un equivalente PHP que puede ser utilizado en conjunción con php-openid?
El mecanismo de descubrimiento, XRDS, se cubre en el siguiente documento:
- groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains
Al parecer, algo así como "XRDS: sencillas de diso" deberían funcionar, pero las pruebas básicas no proporciona resultados útiles.
- code.google.com/p/diso /
Gracias,
Solución
Ok he encontrado que es relativamente sencillo para modificar la aplicación XRDS: sencillas para apoyar mecanismo de descubrimiento-Host Meta de Google. La advertencia siendo este es un mecanismo de descubrimiento experimental El espacio de nombre de Google y debe cambiar en algún momento posterior a algo más adecuado para un sistema global independiente.
Parche para XRDS-simple:
Ejemplo de uso para encontrar el URL de identidad para alimentar con PHP-OpenID:
<?php
require_once 'XRDS.php';
require_once 'XRDS/Discovery.php';
$domain = 'google.com';
$disco = new XRDS_Discovery();
$disco->discovery_methods = array('XRDS_Discovery_Host_Meta');
$xrds = $disco->discover('https://www.google.com/accounts/o8/.well-known/host-meta?hd=' . $domain);
$xrd = $xrds->xrd[0];
$identityUri = $xrd->service[1]->uri[0]->uri;
if (0 == strcmp($xrd->canonicalId, $domain)) {
echo "identity uri: $identityUri\n\n";
} else {
echo "discovery failed.\n\n";
}
?>