У меня есть следующие: -Сравнение «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);”
. Я тестировал этот подход, и он работал хорошо, но не уверен, что этот подход может вызвать проблемы в будущем. Поэтому мне нужна помощь в этих вопросах: -
В sameAccountName имеют следующий формат «FName.LastName», например john.smith. поэтому позвольте сказать, что в будущем у нас было два пользователя, которые имеют то же имя &. так что в этом случае SamAccountName однозначно идентифицирует любого пользователя?
Как AD заполняет SamAccountName? Например, в приведенном ниже изображении, я думаю, что SAMAccountName является именем пользователя (pre-windows 2000)? Это верно. Где я могу контролировать его значение и не должен быть Firstname.Lastname?
Currenly все наши пользователи внутри AD будут иметь их
“httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1)”
равна их SamAccountName. Но верно ли это правило?Действительно ли SamAccountName уникально идентифицирует пользователей? если да, то он также однозначно отступит от них кросс-доменами?
- Лучше использовать имя пользователя-пользователя вместо имени samAccountname? и что именно
string ADusername = httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1);
точно представляет внутри AD?
Благодаря
спасибо за ответ, да, я использую активный каталог, но я управляю ролью безопасности внутри своей собственной базы данных. для AD я использую только тех пользователей, которые там существуют .. Второй вопрос будет «httpContext.User.Identity.Name.Substring (httpContext.User.Identity.Name.IndexOf (« \\ ») + 1)« вернуть SamAccountNamE? –
Если вы используете WindowsAuthentication в IIS, он использует имя sAMAccountName. Возможно, подумайте об использовании проверки подлинности Windows с IIS. Тогда вам не нужно думать о куках и формах. Кроме того, вы можете легко проверить членство своего пользователя, и вам не нужно поддерживать другую базу данных. Я использую его для всех своих приложений для интрасети. – maddin
Извините, но последний комментарий некорректен. Я имею в виду, если вы используете Active Directory (не WindowsAuthentication) для своей аутентификации »и« ваше управление безопасностью », то вы можете легко поддерживать свои членства. Потому что это функция Active Directory. http://technet.microsoft.com/en-us/library/cc739393%28v=ws.10%29.aspx – maddin