C # предлагает различные типы аутентификации в пользовательских приложениях - PullRequest
1 голос
/ 06 декабря 2011

Я создаю клиентское приложение на C #, которое содержит систему авторизации на основе базы данных.

Проверка подлинности осуществляется через интерфейс, подобный следующему:

public interface IAuthorizationRequest {
    bool IsUserValid(string userName, string password);
}

Я понимаю, как использовать C # для запроса к активному каталогу, но мне было интересно, как бы я связал учетную запись активного каталога для пользователя ссистема аутентификации базы данных, которую я уже предоставляю.Если пользователь хотел бы интегрировать свою аутентификацию со своей системой Active Directory вместо использования встроенной аутентификации, как я могу это обеспечить?

Кроме того, я предполагаю, что мне все еще нужна база данных пользователей для хранения настроек и информации профиля.Является ли это своего рода уникальным идентификатором Active Directory, который я могу получить с помощью C #, чтобы связать учетную запись пользователя с учетной записью Active Directory?

Считается ли целесообразным более или менее импортировать пользователей Active Directory в приложение и создатьУчетные записи пользователей локального приложения, связанные с соответствующей записью Active Directory?

Я искал в Интернете этот ответ, но, похоже, проблема в том, что я не знаю, как сформулировать вопрос, который я задаю.

Примечание. Я не собираюсь использовать поставщиков проверки подлинности ASP.NET, поскольку это клиентское приложение с централизованным сервером базы данных.

Я изучал WIF (Windows Identity Foundation), но не смогне уверен, что это был лучший подход.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Я бы поместил имя пользователя AD в вашу таблицу пользователей, как упомянуто @Wiktor, и попытался бы использовать Dependency Injection, чтобы выбрать, какую модель аутентификации использовать для данного пользователя (при условии, что пользователь непосредственно выбирает, какую модель использовать.скажем от переключателей или выпадающего списка).

1 голос
/ 06 декабря 2011

WIF поможет вам создавать веб-приложения, но кажется, что это не ваш выбор.

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

Если встроенная аутентификация не доступна, вы все равно можете работать с AD, по этой ссылке вы можете начать:

http://www.codeproject.com/KB/system/everythingInAD.aspx

И последнее - да, вам нужно каким-то образом назначить один из атрибутов AD для вашей пользовательской таблицы, чтобы каждый раз, когда пользователь AD заходил в ваше приложение, вы могли идентифицировать его в своей базе данных. Можно заранее импортировать учетные записи, или вы можете создавать учетные записи «на лету». Однако, если пользователи уже присутствуют в вашей базе данных и интеграция с AD является еще одной формой аутентификации, вы можете попросить своих пользователей войти в систему с использованием существующих учетных данных (хранящихся в вашей базе данных), запросить их идентификационные данные AD, и если оба источника аутентификации успешно прошли проверку. , вы можете объединить информацию из AD в записи пользователя.

...