2014-12-15 4 views
1

У меня есть следующие: -Сравнение «httpContext.User.Identity.Name» с активным каталогом SamAccountName. Правильно ли это?

  • Я работаю на ASP.NET MVC-4 веб-приложения.
  • Я использую проверку подлинности, которая аутентифицирует пользователей в отношении LDAP.

У меня есть таблица для хранения пользователей SecurityGroup. Если таблица будет иметь SecurityGroupID + имя пользователя SamAccountName.

Затем, чтобы проверить, если пользователь Войти находится в пределах данной группы безопасности, я получаю имя входа в систему, следующим образом: -

string ADusername = httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1); 

Затем я проверяю, если выше строка Adusername находится в любой из SamAccountName внутри таблицу SecurityGroup. Поэтому в этом случае я обрабатываю SamAccountName, как если бы он был таким же, как “httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1);” . Я тестировал этот подход, и он работал хорошо, но не уверен, что этот подход может вызвать проблемы в будущем. Поэтому мне нужна помощь в этих вопросах: -

  1. В sameAccountName имеют следующий формат «FName.LastName», например john.smith. поэтому позвольте сказать, что в будущем у нас было два пользователя, которые имеют то же имя &. так что в этом случае SamAccountName однозначно идентифицирует любого пользователя?

  2. Как AD заполняет SamAccountName? Например, в приведенном ниже изображении, я думаю, что SAMAccountName является именем пользователя (pre-windows 2000)? Это верно. Где я могу контролировать его значение и не должен быть Firstname.Lastname? enter image description here

  3. Currenly все наши пользователи внутри AD будут иметь их “httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1)” равна их SamAccountName. Но верно ли это правило?

  4. Действительно ли SamAccountName уникально идентифицирует пользователей? если да, то он также однозначно отступит от них кросс-доменами?

  5. Лучше использовать имя пользователя-пользователя вместо имени samAccountname? и что именно string ADusername = httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1); точно представляет внутри AD?

Благодаря

ответ

0

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

GroupPrincipal.GetMember

SamAccountName является атрибутом, который должен быть уникальным в домене, но не в лесу. Поэтому Джон Смит может существовать дважды в Лесу AD.

Смотрите здесь

sAMAccountName

SamAccountName и UserPricncipalName не должны быть зп и GivenName. Вы можете использовать любое значение. Вы можете управлять этими значениями при создании учетной записи. Позже вы также можете их изменить.

+0

спасибо за ответ, да, я использую активный каталог, но я управляю ролью безопасности внутри своей собственной базы данных. для AD я использую только тех пользователей, которые там существуют .. Второй вопрос будет «httpContext.User.Identity.Name.Substring (httpContext.User.Identity.Name.IndexOf (« \\ ») + 1)« вернуть SamAccountNamE? –

+0

Если вы используете WindowsAuthentication в IIS, он использует имя sAMAccountName. Возможно, подумайте об использовании проверки подлинности Windows с IIS. Тогда вам не нужно думать о куках и формах. Кроме того, вы можете легко проверить членство своего пользователя, и вам не нужно поддерживать другую базу данных. Я использую его для всех своих приложений для интрасети. – maddin

+0

Извините, но последний комментарий некорректен. Я имею в виду, если вы используете Active Directory (не WindowsAuthentication) для своей аутентификации »и« ваше управление безопасностью », то вы можете легко поддерживать свои членства. Потому что это функция Active Directory. http://technet.microsoft.com/en-us/library/cc739393%28v=ws.10%29.aspx – maddin

 Смежные вопросы

  • Нет связанных вопросов^_^