Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Прокинуть пользователя до SQL серванта / 7 сообщений из 7, страница 1 из 1
16.06.2015, 12:18
    #38984622
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Пользователь логинится под своей доменной учеткой.
Код: c#
1.
connectionString="...Integrated Security=SSPI;Persist Security Info=False..."


Попробовал осисанное здесь (единственное, что насторожило intranet )
Но
Код: c#
1.
System.Security.Principal.WindowsIdentity.GetCurrent().Name


возвращает мою учетку (под которой я зашел удаленно на сервант).

Можно ли как-то, таки, прокинуть пользователя?

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2015, 12:52
    #38984668
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Ex_Soft,
Код: c#
1.
2.
System.Security.Principal.WindowsIdentity userSecurtityPrincipal = Request.LoginUser.Identity;
var currentUser = userSecurityPrincipal.Name;


?
...
Рейтинг: 0 / 0
16.06.2015, 13:18
    #38984723
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Код: c#
1.
2.
System.Security.Principal.WindowsIdentity userSecurityPrincipal = HttpContext.Current.Request.LogonUserIdentity;
var currentUser = userSecurityPrincipal.Name;


все равно я, а не тот, под которым логинюсь на сайт
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.06.2015, 13:19
    #38984726
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Ex_Soft,
А какие настройки у Application Pool в Identity установлены?
...
Рейтинг: 0 / 0
17.06.2015, 23:48
    #38986351
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Концепция поменялась ;) Вместо Windows authentication пробую Forms Authentication. Забалабенил 1:1 как здесь . Но - не заводится. Справедливости ради, проскакивало
Код: c#
1.
System.Security.Principal.WindowsIdentity.GetCurrent().Name


а в общем и целом - шо мертвому припарки. Хотя в principal - таки, нужный юзвер.
Куда рыть дальше?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2015, 17:34
    #38987212
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Ex_SoftСправедливости ради, проскакивало
Код: c#
1.
System.Security.Principal.WindowsIdentity.GetCurrent().Name



В общем: Impersonate() работает, но только один раз при первом вызове. Причем возвращает уже WindowsImpersonationContext c m_safeTokenHandle.IsInvalid = true , но без каких-либо exception'ов. Соответственно и Undo() не отрабатывает, потому как
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  public void Undo()
     {
      if (this.m_safeTokenHandle.IsInvalid)
       {
         int errorCode = Win32.RevertToSelf();
         if (errorCode < 0)
           Environment.FailFast(Win32Native.GetMessage(errorCode));
       }
       else
       {
         int errorCode1 = Win32.RevertToSelf();
         if (errorCode1 < 0)
           Environment.FailFast(Win32Native.GetMessage(errorCode1));
         int errorCode2 = Win32.ImpersonateLoggedOnUser(this.m_safeTokenHandle);
         if (errorCode2 < 0)
           throw new SecurityException(Win32Native.GetMessage(errorCode2));
       }
       WindowsIdentity.UpdateThreadWI(this.m_wi);
       if (this.m_fsd == null)
         return;
       this.m_fsd.SetTokenHandles((SafeTokenHandle) null, (SafeTokenHandle) null);
     }



BTW, тупо скопировал отсюда консольную дрозофилу. Поменял тока

Код: c#
1.
2.
3.
const int LOGON32_LOGON_INTERACTIVE = 2;
// на
const int LOGON32_LOGON_NETWORK_CLEARTEXT = 8;



1:1 (т.е. "...Impersonate() работает, но только один раз при первом вызове. Причем возвращает уже WindowsImpersonationContext c m_safeTokenHandle.IsInvalid = true , но без каких-либо exception'ов...")

в каком месте можно по гравицапе постучать чтобы, таки, растолкать?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2015, 17:58
    #38987248
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокинуть пользователя до SQL серванта
Вроде понял наконец Вашу проблему. Называется она Double Hop, и 'лечится' делегированием на IIS сервере обычно путем настройки Kerberos.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Прокинуть пользователя до SQL серванта / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]