2010-07-01 6 views
2

Je dois fournir un service OpenID aux utilisateurs de mon domaine. Ils ont tous des sous-domaines uniques tels que: abc.example.com et je veux qu'ils utilisent abc.example.com comme leur identité openid ...Exécution de mon propre serveur/service d'identité OpenID (php)

J'ai lu ceci - https://www.myopenid.com/help#own%5Fdomain - mais il ressemble à son pour (a) UN utilisateur et (b) je dois avoir un compte myopenid/similaire existant ...

phpmyid ressemble rad, mais semble ne fonctionner que pour les utilisateurs individuels ... comment je peux le modifier pour le faire fonctionner pour tout le monde avec un sous-domaine? Ou que puis-je faire d'autre?

+0

Ce que myOpenID décrit est un moyen de lier votre site (n'importe quel site) à un compte myOpenID (délégation OpenID), probablement pas ce que tu veux. (Et la délégation ne fonctionne même pas pour certains sites de consommation OpenID! Dois-je poser une question sur StackOverflow ou SuperUser?) – MvanGeest

Répondre

3

Le sous-domaine est la partie facile. Pour cela vous aurez besoin de "Wildcard DNS" qui crée essentiellement cet enregistrement DNS: *.domain.com IN A 10.10.0.1 en remplaçant respectivement le domaine et l'IP par le vôtre. Ensuite, vous devrez configurer n'importe quel serveur web pour lire dans les domaines génériques (cela fonctionne typiquement dans Apache comme ça: ServerAlias *.domain.com mais dépendra du serveur web au serveur web.)

Sur la dernière partie phpMyID - c'est seulement pour une personne Malheureusement, cet article est trop petit pour entrer exactement dans la manière de faire ceci: il y a des snipits et des idées de plus haut niveau qui devraient probablement être implémentées

D'abord vous devrez prendre n'importe quel code informations dans le fichier et le déplacer vers une base de données (nom d'utilisateur, mot de passe, etc) afin que vous puissiez plus facilement suivre les utilisateurs.Vous serez également obligé de suivre les noms des utilisateurs en utilisant [A-Za-z0-9_] comme &,%,$,#,@,!, ,etc va tout casser le DNS et l'utilisateur peut ' t accéder au P rovider plus.

Vous aurez aussi besoin de savoir ce que le nom d'hôte actuel qui est en cours d'accès est:

<?php 
$hostname = $_SERVER['SERVER_NAME']; 
$username = basename($hostname, ".domain.com"); // Replace .domain.com with your domain 
?> 

Alors maintenant que vous avez un utilisateur, vous pouvez structurer l'appel de base de données pour sélectionner les utilisateurs d'informations - puis mettre à jour la fois les valeurs codées en dur du "one user phpMyID" avec les données de l'utilisateur dynamique de la base de données et le script devrait continuer sur sa bonne voie. Cela fait un moment que j'ai regardé phpMyID mais je suppose que c'est la majorité de l'idée derrière cela.

+0

Merci Marco - je regarde dans le ci-dessus! – RubiCon10

+0

J'ai également utilisé CommunityID qui prend en charge les URL basées sur un nom d'utilisateur. –

+0

Je suis admiré! Joli usage de 'basename', assez créatif. –

2
+1

Bien que cela puisse théoriquement répondre à la question, [ce serait préférable] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259 # 8259) pour inclure les parties essentielles de la réponse ici, et fournir le lien pour référence. – Benjol

+0

S'il vous plaît considérer ce que suggère @Benjol. Je ne peux pas vous dire combien de réponses hautement votées je dois supprimer car elles ne sont constituées que d'un lien brisé. Si ce lien meurt, votre réponse le sera également. S'il vous plaît élaborer. –

0

Prairie est un serveur d'identité Internet léger basé sur OpenID. Au lieu de vous enregistrer sur chaque site Web avec différentes combinaisons de nom d'utilisateur et mot de passe, vous utilisez votre serveur d'identité pour vous connecter.

+1

Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/ 8259 # 8259) pour inclure les parties essentielles de la réponse ici, et fournir le lien pour référence. – Benjol

+1

S'il vous plaît au moins résumer le contenu de votre texte de lien ici. Si ce lien est rompu, la réponse est la même. –

+0

Le lien fonctionne et la description est également ajoutée !! – Seeker

Questions connexes