безопасный способ аутентификации администратора на сайте ASP.NET с использованием OpenID с DotNetOpenID

Воодушевленный SO, я пытаюсь написать сайт ASP.NET, который использует OpenID для аутентификации пользователя. Это обычный сайт WinForms (не MVC.NET), использующий для аутентификации библиотеку DotNetOpenId.

Могу ли я разрешить / запретить административные функции на сайте, просто сравнив текущий сеанс «ClaimedID» (возвращенный в событии OpenIdLogin_LoggedIn, как член DotNetOpenId.RelyingParty, OpenIdEventArgs.Response.ClaimedIdentifier) ​​с известным идентификатором OpenID администратора (т. Е. мой)?

Если да, то безопасно ли для этого идентификатора быть видимым (например, в открытом исходном коде), или он должен быть «спрятан» в файле конфигурации или в строке базы данных? (Я знаю, что лучше сделать его настраиваемым, мой вопрос как раз о безопасности.)


person Eric    schedule 11.09.2008    source источник
comment
Вы имели в виду WebForms, а не WinForms?   -  person Ian Ringrose    schedule 16.06.2009


Ответы (2)


Джарретт дает несколько хороших комментариев по поводу использования таблиц базы данных.

Просто отвечу на еще один из ваших вопросов, нет, вообще не конфиденциально помещать ваш OpenID в ваш код. Если настройка ролей кажется излишней для вашего сайта, простая проверка на равенство с вашим ClaimedIdentifier просто идеальна.

person Andrew Arnott    schedule 17.12.2008

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

Я не транслирую открытые идентификаторы в своем приложении. Они хранятся в таблице. При каждом результате действия я попадаю в таблицу Users, так как я также изменил свою, чтобы хранить различную информацию о состоянии пользователя. За исключением домашней страницы, мне понадобится некоторая пользовательская информация из этой таблицы. Я использую LINQ, поэтому я включаю .LoadWith (), чтобы загрузить пользователя с его списком ролей при его сериализации.

person Jarrett Meyer    schedule 11.09.2008