2013-04-04 2 views
0

Я запустил веб-сайт ASP.NET в Visual Studio с использованием предварительно заданного шаблона Microsoft. Это поможет мне узнать об OpenID в ASP.NET.Назначение столбца ProviderUserName в примере DotNetOpenAuth

Внутри включенной базы данных SQL в образце сайта есть таблица с именем UsersOpenAuthAccounts, которая содержит столбец с именем ProviderUserName.

Может ли кто-нибудь сказать мне цель этой колонки? В моих тестах это, похоже, хранит имя пользователя, которое я бы зарегистрировал на сайте OpenID (например, мое имя пользователя Google - мой адрес электронной почты). Однако я также вижу, что столбец ProviderUserId содержит значение IAuthenticationResponse.ClaimedIdentifier, например.

https://www.google.com/accounts/o8/id?id=AIt................g3c 

... который будет использоваться для идентификации пользователя от поставщика OpenID для будущих запросов.

Таким образом, есть ли какие-либо вопросы, включая колонку ProviderUserName? На самом деле он не используется нигде в пределах образца сайта Microsoft.

ответ

1

ПровайдерПользовательское имя - это плохая идея (ИМО).

Идентификатор с идентификатором OpenID - это правильная строка для проверки пользователей. Это снижает безопасность для использования чего-либо еще, включая адрес электронной почты. Если вас интересуют только логины OpenID, вы можете просто выбросить предоставленный код ASP.NET и напрямую использовать DotNetOpenAuth's OpenIdRelyingParty и самостоятельно обработать таблицу пользователей. Он будет примерно таким же простым, как ваш текущий код, но без ненужных столбцов.

Что дает дополнительный класс столбцов и фасад классов команды ASP.NET - это возможность сочетать логины OpenID с входами OAuth, которые позволяют вам принимать учетные записи Twitter и Facebook на вашем сайте. OAuth не был предназначен для протокола аутентификации, поэтому те, кто его использует, должны составить собственное представление о имени пользователя. Для того чтобы это было глобально уникальным, оно должно быть префикс провайдера, который выдает это имя пользователя. Таким образом, у вас есть ProviderName («twitter» или «google») и имя ProviderU, которое является именем пользователя (или, возможно, идентификатором пользователя) учетной записи от поставщика услуг OAuth.

+0

«Использовать OpenIdRelyingParty DotNetOpenAuth напрямую и самостоятельно обрабатывать таблицу пользователей». Да, это мой план, поскольку я интегрирую функциональность OpenId в существующее приложение, которое уже имеет разрешение. Спасибо за очень четкий ответ. – EvilDr