Я пытаюсь реализовать собственную конечную точку OpenID на основе учетных записей пользователей SMF . Я основывал свой код на phpMyOpenID и некоторый код авторизации SMF.
Пока это работает. Я могу использовать конечную точку для входа / регистрации на любом сайте. Если я не зашел в систему на SMF, он попросит мой логин и если этот SMF-вход будет успешным, он примет его.
Однако, похоже, он не отличается между разными входами SMF. Т.е. другой пользователь сообщил, что он пытался использовать конечную точку на сайте X, вошел в систему со своей учетной записью SMF и приземлился на мою учетную запись на сайте X (я зарегистрировал конечную точку OpenID ранее на этом сайте).
Я предполагаю, что я должен как-то отправить логин SMF или сделать его каким-то уникальным для входа в SMF. Поскольку это, вероятно, тривиально, что я должен делать, я думал, что я спрошу здесь о SO – возможно, есть еще кое-что, что мне нужно исправить.
Код (только PHP), если вы хотите взглянуть, находится здесь: http://github.com/albertz/smf-openid-server
Или, может быть, просто опишите, что мне нужно сделать, чтобы сделать его уникальным для каждого входа в SMF.
Другой проект, который я планирую, – это клиент OpenID в многопользовательской игре на C ++. У хостера будет возможность разрешить только логины от людей, которые могут пройти аутентификацию через OpenID. Также я хочу, чтобы можно было разрешить вход в систему только определенным людям. Каков общий способ получения уникальной строки на основе входа OpenID? В этом случае я подумал о чем-то вроде http://{smf-openid-endpoint}/{smf-user}
или http://www.google.de/profiles/{google-user}
. Каков канонический способ получить такую строку?
Я думаю, что этот другой вопрос может быть связан с моим главным вопросом, поэтому я также ставил его здесь.
См. Также соответствующий вопрос: уникальный URL-адрес идентификатора? Каковы разные термины?
Кажется, первый запрос от конечного пользователя, которого я получаю, – checkid_setup . В этом ответе я могу указать уникальный URL (что я называю уникальной строкой в моем вопросе) в поле openid.identity
.
Я сделал это в своем коде сейчас и, похоже, работает. Т.е. я могу ввести общий URL конечной точки OpenID (например, на SourceForge), и он автоматически расширит его, как я предложил в моем вопросе.
Чтобы ответить на мой второй вопрос: кажется, что сам URL-адрес проверенного идентификатора уникален, поэтому его можно использовать. В связи с чем это иногда может выглядеть загадочным (например, в случае Google, это всего лишь некоторый хэш). Таким образом, это можно использовать внутренне для разных пользователей. Для графического представления я могу показать реальное имя пользователя или почтовый адрес, который я также должен получить от аутентификации OpenID.