Управление сеансами и связывание учетных записей пользователей с OpenID в ASP.NET - PullRequest
3 голосов
/ 08 марта 2010

В настоящее время я играю с DotNetOpenAuth , чтобы веб-сайт ASP.NET (C #) использовал OpenID вместо обычной процедуры логина-пароля для обработки пользователей и сеансов.

До сих пор я добавлял DotNetOpenAuth.dll в свой проект и пробовал пробную страницу входа со следующим:

<rp:OpenIdLogin ID="OpenIdLogin1" runat="server" />

Когда я запускаю страницу, я ввожу действительный URL-адрес миопенида, и веб-сайт перенаправляет на страницу миопенида, где я ввожу свой пароль, и в случае успеха он возвращается к моему default.aspx, поскольку в моем web.config

<authentication mode="Forms">
    <forms defaultUrl="/Default.aspx" loginUrl="~/Login.aspx"/>
</authentication> 

Теперь, когда пользователь "вошел в систему", как можно обрабатывать мой сеанс? На данный момент я не знаю, как я могу, например, проверить, жив ли сеанс или как завершить сеанс.

Мой основной вопрос: как я могу управлять сеансом после аутентификации пользователя с помощью OpenID?


[Update]

Теперь я использую следующее для проверки подлинности: HttpContext.Current.User, и теперь я могу проверить, прошел ли пользователь проверку подлинности в сеансе.

Теперь есть ли способ, как я могу "связать" данные пользователя, которые хранятся в моей базе данных, с учетной записью openid?

1 Ответ

3 голосов
/ 09 марта 2010

Логины OpenID с элементом управления OpenIdLogin (по умолчанию) ничем не отличаются от имени пользователя и пароля с точки зрения ASP.NET. Как вы обнаружили, HttpContext.Current.User устанавливается для каждого входящего HTTP-запроса на основе куки-файла HTTP, который ASP.NET FormsAuthentication отправляет браузеру, чтобы поддерживать согласованность сеанса от запроса к запросу. Пока вы находитесь на странице или в ее коде, свойство Page.User является еще более удобным средством.

Но если вы выполняете контроль доступа, а не проверяете, есть ли вошедший в систему пользователь на каждой странице, лучше использовать тег <authorization> в файле web.config, чтобы заставить пользователя войти в систему перед доступом определенные страницы или каталоги страниц.

Что касается связывания сведений о пользователе, ключ, который вы хотите связать с данными своих пользователей, - это заявленный идентификатор OpenID, который OpenIdLogin автоматически присваивает значению имени пользователя для FormsAuthentication. Таким образом, вы можете получить или сохранить сведения о пользователе в своей базе данных на основе значения HttpContext.Current.User.Identity.Name, которое будет надежным и проверенным уникальным значением для каждого пользователя.

...