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

StackOverflow https://stackoverflow.com/questions/56944

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top