IDP 발견 기반 OpenID의 PHP 구현?
-
11-09-2019 - |
문제
Google은 Automagic Endpoint Discovery와 함께 매우 멋진 사용자 친화적 인 Federated OpenID 로그인을 보유하고 있습니다.
이것은 Java Servlets에서 구현되며 PHP-Openid와 함께 사용할 수있는 PHP가 있습니까?
발견 메커니즘 XRDS는 다음 문서로 다루어집니다.
- Groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains
"Diso의 XRDS-Simple"과 같은 것이 작동하지만 기본 테스트는 유용한 결과를 제공하지 않습니다.
- code.google.com/p/diso/
감사,
해결책
좋아, Google의 호스트 메타 발견 메커니즘을 지원하기 위해 XRDS-Simple 구현을 수정하는 것이 비교적 간단하다는 것을 알았습니다. 경고는 이것이 Google 네임 스페이스 내에서 실험적 발견 메커니즘이며 나중에 전 세계적으로 독립적 인 시스템에 더 적합한 것으로 변경해야합니다.
XRDS-Simple 패치 :
Php-Openid에 공급할 ID URL을 찾기위한 예제 :
<?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";
}
?>
제휴하지 않습니다 StackOverflow