Чем отличается OpenID между разными логинами на одной и той же конечной точке OpenID - PullRequest
0 голосов
/ 14 июля 2010

Я пытаюсь реализовать собственную конечную точку 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 уникальным? Какие существуют термины?

1 Ответ

1 голос
/ 16 июля 2010

Кажется, первый запрос от конечного пользователя, который я получаю, - checkid_setup .В этом ответе я могу указать уникальный URL-адрес (то, что я называю уникальной строкой в моем вопросе) в поле openid.identity.

Я сделал это в своем коде, и онпохоже на работу.Т.е. я могу ввести общий URL-адрес конечной точки OpenID (например, в SourceForge), и он будет автоматически расширяться так, как я предложил в моем вопросе.

Чтобы ответить на мой второй вопрос: кажется, что проверен идентификатор URLсам по себе уникален, так что это может быть использовано.В связи с этим иногда это может выглядеть загадочно (например, в случае с Google, это просто какой-то хэш).Так что это может быть использовано внутри, чтобы отличаться между разными пользователями.Для графического представления я могу показать реальное имя пользователя или почтовый адрес, который я также должен получить из аутентификации OpenID.

...