Проверка подлинности Windows с помощью ASP.NET MVC - PullRequest
6 голосов
/ 10 сентября 2009

Я создал пользовательскую систему входа в систему для своего веб-приложения asp.net mvc 1.0, поскольку я храню большие объемы пользовательских данных для каждого пользователя (из-за этого я решил не пытаться добавлять пользовательские таблицы для проверки подлинности Windows). Система входа в систему в основном использует SQL Server (2005 или 2008) и мою собственную базу данных и структуру таблиц, которая довольно стандартна. Таблица пользователей с уникальным идентификатором, именем пользователя и хешированным паролем, которая связана с другими моими таблицами данных, связанных с пользователем.

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

Вопрос, вероятно, сформулирован неправильно, и я, возможно, неправильно понял, как работает аутентификация Windows, но я хотел бы предложить эту опцию в своем веб-приложении.

Ответы [ 3 ]

8 голосов
/ 10 сентября 2009

Если у вас включена аутентификация Windows на вашем сайте, то вы сможете использовать User.Identity.Name, чтобы получить имя пользователя NT / Active Directory для текущего пользователя, вошедшего в систему, и сопоставить его со столбцом в таблице пользователей .

8 голосов
/ 10 сентября 2009

Вот как мы сделали это для гибридного приложения для проверки подлинности с помощью форм / Windows: -

public class MyBaseController
{
  protected override void OnAuthorization( AuthorizationContext authContext )
  {
    if
    (
      !User.Identity.IsAuthenticated &&
      Request.LogonUserIdentity != null &&
      Request.LogonUserIdentity.IsAuthenticated
    )
    {
      String logonUserIdentity = Request.LogonUserIdentity.Name;
      if ( !String.IsNullOrEmpty(logonUserIdentity) )
      {
        User loginUser =
          Context.Users.FirstOrDefault(
            x => x.UserIdentity == logonUserIdentity);
        if ( loginUser != null )
          FormsAuthentication.SetAuthCookie(
            loginUser.LoginName,createPersistentCookie);
    }
  }

Есть некоторая инкапсуляция, которую я вынул ради компактности.

1 голос
/ 10 сентября 2009

Если я правильно понимаю ваш вопрос, вы хотите добавить другие данные, связанные с именем пользователя, прошедшим проверку подлинности Windows?

Если это так, вам нужно будет сохранить имя пользователя и эту пользовательскую информацию в новой таблице. Данные аутентификации Windows существуют в Active Directory, поэтому вы можете посмотреть список пользователей. Вы не получите никакой специальной информации, добавленной в AD автоматически, когда Windows аутентифицирует пользователя. Если вам нужна какая-либо пользовательская информация, вам нужно будет добавить для нее пользовательский поиск в AD или просто искать свои пользовательские данные в базе данных в зависимости от того, где вы решили хранить информацию.

Практически все, что вы получаете с помощью аутентификации Windows, - это имя пользователя и возможность проверять роли (группы AD), связанные с этим пользователем. Все, что за этим нужно, вам нужно будет вручную кодировать.

Недавно я спросил о реализации настройки помимо встроенной защиты в MVC и придумал решение самостоятельно. Может быть, есть некоторые лакомые кусочки, которые могут помочь вам ответить на ваш вопрос:

Как реализовать проверки авторизации в ASP.NET MVC на основе данных сеанса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...