безопасный способ аутентификации администратора на сайте ASP.NET с использованием OpenID с DotNetOpenID - PullRequest
3 голосов
/ 11 сентября 2008

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

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

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

Ответы [ 2 ]

3 голосов
/ 11 сентября 2008

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

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

2 голосов
/ 17 декабря 2008

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

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

...