PHP-реализация обнаружения IdP на основе OpenID?

У Google есть очень удобный федеративный вход OpenID с автоматическим обнаружением конечных точек:

Это реализовано в сервлетах Java. Есть ли эквивалент PHP, который можно использовать в сочетании с php-openid?

Механизм обнаружения XRDS описан в следующем документе:

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

Казалось бы, что-то вроде «DiSo's XRDS-Simple» должно работать, но базовое тестирование не дает полезных результатов.

  • code.google.com/p/diso/

Спасибо,


person Steve-o    schedule 19.09.2009    source источник


Ответы (1)


Хорошо, я обнаружил, что довольно просто изменить реализацию XRDS-Simple для поддержки механизма обнаружения Google Host-Meta. Предостережение заключается в том, что это экспериментальный механизм обнаружения в пространстве имен Google, который через некоторое время должен измениться на что-то более подходящее для глобально независимой системы.

Патч для XRDS-Simple:

Пример использования для поиска URL-адреса удостоверения для ввода в 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";
}

?>
person Steve-o    schedule 22.09.2009