2010-07-01 2 views
2

Мне нужно предоставить услуги openid пользователям моего домена. У всех их есть уникальные поддомены, такие как: abc.example.com, и я хочу, чтобы они использовали abc.example.com в качестве их идентификатора openid ...Запуск моего собственного сервера/службы идентификации OpenID (php)

Я прочел это - https://www.myopenid.com/help#own%5Fdomain - но он выглядит как его (а) ОДИН пользователь и (б) Мне нужно иметь существующую учетную запись myopenid/аналогичную ...

phpmyid выглядит радом, но, похоже, работает только для одиноких пользователей ... как я могу настроить его, чтобы он запускался для всех с субдомен? Или что еще я могу сделать?

+0

Описание myOpenID - это способ связать ваш сайт (любой сайт) с учетной записью myOpenID (делеция OpenID), возможно не то, что вы хотите. (И делегирование даже не работает для некоторых сайтов-пользователей OpenID! Должен ли я задавать вопрос о StackOverflow или SuperUser?) – MvanGeest

ответ

3

Субдомен легкая часть. Для этого вам понадобится «Wildcard DNS», который по существу создает эту запись DNS: *.domain.com IN A 10.10.0.1 заменяет ваш домен и IP-адрес соответственно. Затем вам нужно будет настроить любой веб-сервер для чтения в доменах с дикими картами (это обычно работает в apache так: ServerAlias *.domain.com, но будет зависеть от веб-сервера до веб-сервера.

На последней части. PhpMyID - это только для одного человека идентичность. И, к сожалению, этот пост слишком мал, чтобы точно понять, как это сделать. Это некоторые идеи снайперов и более высокого уровня, которые, вероятно, должны быть реализованы.

Сначала вам нужно будет взять любые жестко закодированные информацию в файле и переместить ее в базу данных (имя пользователя, пароль и т. д.), чтобы вы могли более легко отслеживать пользователей. Кроме того, вы будете вынуждены отслеживать имена пользователей, используя только [A-Za-z0-9_], поскольку &,%,$,#,@,!, ,etc все переломит DNS, t получить доступ к P Ровайдер больше.

Вы также должны знать, что текущее имя хоста, время доступа является:

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

Так что теперь у вас есть пользователь вы можете структурировать вызов базы данных, чтобы выбрать, что пользователи информации - затем обновить один раз жестко закодированные значения «одного пользователя phpMyID» с динамическими пользовательскими данными из базы данных, и сценарий должен продолжаться по-весски. Прошло некоторое время с тех пор, как я просмотрел phpMyID, но я предполагаю, что это основная идея.

+0

Спасибо Марко - я смотрю выше! – RubiCon10

+0

Я также использовал CommunityID, который поддерживает URL-адрес, основанный на имени пользователя. –

+0

Я восхищаюсь! Хорошее использование 'basename', довольно творческое. –

2
+1

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-содержать-ссылки-в другом месте-действительно-хорошие ответы/8259 # 8259), чтобы включить основные части ответа здесь и предоставить ссылку для справки. – Benjol

+0

Пожалуйста, подумайте о том, что предлагает @Benjol. Я не могу сказать вам, сколько ответов, которые я получил, чтобы удалить, потому что они состоят только из сломанной ссылки. Если эта ссылка замирает, значит, и ваш ответ. Пожалуйста, дополните. –

0

Prairie - это легкий сервер идентификации Интернета на основе OpenID. Вместо регистрации на каждом веб-сайте с разными комбинациями имени пользователя и пароля вы используете свой сервер идентификации для входа в систему.

+1

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/ 8259 # 8259), чтобы включить здесь основные части ответа и предоставить ссылку для справки. – Benjol

+1

Пожалуйста, по крайней мере, суммируйте содержимое вашего текста ссылки здесь. Если эта ссылка ломается, то и этот ответ. –

+0

Ссылка работает и описание также добавлено! – Seeker