Pergunta

O Google tem um muito bom user friendly de login OpenID federado com a descoberta endpoint automagic:

Esta é implementado em Java Servlets, há um equivalente PHP que pode ser usado em conjunto com o PHP-OpenID?

O mecanismo de descoberta, XRDS, é coberto no seguinte documento:

  • groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains

Parece algo como "de Diso XRDS-Simples" deve funcionar, mas testes básicos não fornece resultados úteis.

  • code.google.com/p/diso /

Obrigado,

Foi útil?

Solução

Ok eu descobri que é relativamente simples de modificar a implementação XRDS-Simples de mecanismo de descoberta Host-Meta suporte do Google. A ressalva sendo este é um mecanismo de descoberta experimental dentro de namespace do Google e deve mudar em algum momento mais tarde para algo mais adequado para um sistema globalmente independente.

Patch para XRDS-Simples:

Exemplo de uso para encontrar Identidade URL para alimentar 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";
}

?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top