Janrain php library et google endpoint pour OpenId
-
22-07-2019 - |
Question
J'utilise janRain Php library pour la découverte OpenId et yadis et peu importe ce que je fais, je vais travailler dans des choses comme user.openid.org ou mon propre fournisseur, mais si j'essaie d'utiliser le point de terminaison Google, je ne peux en obtenir informations de découverte.
Même si j'exécute l'exemple de découverte pour la bibliothèque janrain, j'obtiens le résultat suivant Claimed
Identifier http://www.google.com/accounts/o8/id
No OpenID services discovered.
et il en va de même si j'ajoute le https: // avant l'URL.
Ma question n'est probablement pas comment le faire fonctionner, mais si c'est réellement possible, quels autres choix dois-je avoir (qui fonctionne sur mon site, aucune autorisation impertinente ne voulait dans le projet).
Pourquoi openId est-il si # @! # @ complexe et non documenté (remarque, j'ai donné quelques heures à zend_openid pour obtenir le même résultat)
La solution
ça marche ici. quelques astuces:
- si je comprends bien,
http(s)://www.google.com/accounts/o8/id
n’est pas un point de terminaison openid, mais un point de terminaison google Discovery . vous devez lui fournir un identifiant OpenID valide (google), tel queexample.blogspot.com
, pour lequel il renvoie l'identifiant revendiqué, l'URL du serveur, les types de service, etc. - L'exemple de découverte ne fonctionne qu'après avoir corrigé les
<?
et<?=
indiscover.php
(en les remplaçant par<?php
et<?php echo
). sinon, vous pouvezini_set('short_open_tag', '1')
. il est désactivé par défaut dansphp.ini-recommended
. - votre installation PHP supporte-t-elle SSL? voir README , plus précisément cette partie:
Not all PHP installations support SSL. You can find out if yours supports SSL by reading the "HTTP Fetching" section of the output of "examples/detect.php." If your installation does not support SSL, then https:// identity URLs and server URLs will not be supported by the library. An attempt to use such an identity URL will be equivalent to using an invalid OpenID. To enable SSL support, recompile PHP with OpenSSL support or install the appropriate OpenSSL module for your platform. If you are using CURL, CURL will need to be built with OpenSSL support.
Autres conseils
Ceci est un boeuf légitime. Google dit qu'ils supportent OpenID, mais que le leur ne fonctionne pas comme n'importe qui d'autre. MyOpenID.com, blogspot, aol, yahoo, wordpress, myspace, livejournal et bien d’autres supportent correctement le standard et fonctionnent comme prévu. Comme votre propre fournisseur OpenID, vous pouvez le créer à l’aide du projet de serveur CommunityID.
/ soupir
Vous devez faire une demande d’identité dirigée. Normalement, cela implique simplement de transmettre l’URL comme si l’utilisateur l’avait entrée ... cela a toujours fonctionné pour moi dans le passé (tant que la bibliothèque que vous utilisez supporte OpenID2.0).
Je vous suggère de regarder cette question: PHP-OpenID et Google / Yahoo de Janrain