Баг при получении групп пользователя в домене 2000
От: MEPTB  
Дата: 28.04.03 14:19
Оценка:
Необходимо получить подтверждение нахождения пользователя в заданных группах.
Получил Principal у него беру IsInRole и задаю указанную группу. Ответ False. Залез в дебаг, у пользователя нет ни одной группы.
Создал отдельную группу. Занес пользователя (себя) в эту группу. Проверяю -> пусто.
Пользователь являетяс пользователем домена на win2k предположил что происходит проверка пользователя на нахождение в группе на текущей машине — результат отрицательный 8(.


что делать, может кто сталкивался? если да, то подскажите.
Re: Баг при получении групп пользователя в домене 2000
От: TK Лес кывт.рф
Дата: 28.04.03 16:01
Оценка: 4 (1)
Здравствуйте, MEPTB, Вы писали:

MEP>Необходимо получить подтверждение нахождения пользователя в заданных группах.

MEP>Получил Principal у него беру IsInRole и задаю указанную группу. Ответ False. Залез в дебаг, у пользователя нет ни одной группы.
MEP>Создал отдельную группу. Занес пользователя (себя) в эту группу. Проверяю -> пусто.
MEP>Пользователь являетяс пользователем домена на win2k предположил что происходит проверка пользователя на нахождение в группе на текущей машине — результат отрицательный 8(.

Видно имя группы указывается в неверном формате.

Правильное имя можно узнать выполнив под отладчиком код и посмотрев значение поля m_roles

AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
System.Security.Principal.WindowsPrincipal principal = (System.Security.Principal.WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
principal.IsInRole("Check");
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Баг при получении групп пользователя в домене 2000
От: MEPTB  
Дата: 29.04.03 12:25
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, MEPTB, Вы писали:

TK>Видно имя группы указывается в неверном формате.
TK>Правильное имя можно узнать выполнив под отладчиком код и посмотрев значение поля m_roles

TK>
TK>AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
TK>System.Security.Principal.WindowsPrincipal principal = (System.Security.Principal.WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
TK>principal.IsInRole("Check");
TK>


Сообщу интересную особенность. Это касается m_roles. В неё, как я понимаю должны устанавливаться роли пользователя. Одно только но! Так как вся фенкциональность по получению групп пользователей находиться в win32 то одращение происходит через прокси, а это означает, что ничего не видем в деаге 8(. Если же в качестве параметра передать WindowsBuiltInRole.Administrator из System.Security.Principal, то получим true. Посморев значение элемента enum_а данного получил число 544. Это аля идентификатор роли администратора. Пробежав и проверив числа перебором нашел ещё несколько. Но это фигня, мне всё равно нужно проверить принадлежность к СВОЕЙ группе. Я уже и на домен положу, обойдусь и группой на текущей машине, но эта зараза всёравно не принемает строковое представление.
Re[3]: Баг при получении групп пользователя в домене 2000
От: Митрошин Александр Россия  
Дата: 01.07.03 13:58
Оценка:
Здравствуйте, MEPTB, Вы писали:

Я уже и на домен положу, обойдусь и группой на текущей машине, но эта зараза всёравно не принемает строковое представление.

Надо указывать имя домена + имя группы(или имя домена+имя пользователя), тогда все нормально будет, по крайней мере, у меня следующий пример нормально проходил


System.Security.Principal.WindowsIdentity oWe=System.Security.Principal.WindowsIdentity.GetCurrent();            
System.Security.Principal.WindowsPrincipal oWp=new System.Security.Principal.WindowsPrincipal(oWe);        

bool blI=oWp.IsInRole("ИМЯ_ДОМЕНА\\ИМЯ_ГРУППЫ");

if(blI)
  System.Windows.Forms.MessageBox.Show("success");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.