Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Thread.CurrentPrincipal.Identity и TcpChannel, Проблемы с аутентификацией 
:(
    Опции темы
Moid
Дата 22.4.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Есть серверный сервис и клинт. Проверка пользователей делается через создание TCPChannel.

Создаю соединение при первом логоне указав domain, username и password:

Код
        dict["name"] = "TpcBinary";
        dict["port"] = 0;
        dict["timeout"] = RemotingChannelTimeout;
        dict["secure"] = true;
        dict["tokenImpersonationLevel"] = TokenImpersonationLevel.Identification;
        dict["domain"] = domain;
        dict["username"] = username;
        dict["password"] = password;

        var clientSinkProvider = new BinaryClientFormatterSinkProvider();
        var serverSinkProvider = new BinaryServerFormatterSinkProvider
                            {
                                TypeFilterLevel = TypeFilterLevel.Full
                            };

        tcpChannel = new TcpChannel(dict, clientSinkProvider, serverSinkProvider);
        ChannelServices.RegisterChannel(tcpChannel, false);


Thread.CurrentPrincipal.Identity - возвращает верного пользователя(того, что указали при создании коннекта).

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

Код
public void CloseConnection()
        {
            if (tcpChannel != null)
            {
                tcpChannel.StopListening(null);
                ChannelServices.UnregisterChannel(tcpChannel);
                tcpChannel = null;
            }
        }
//And try new connect:

    C#
    dict["name"] = "TpcBinary";
    dict["port"] = 0;
    dict["timeout"] = RemotingChannelTimeout;
    dict["secure"] = true;
    dict["tokenImpersonationLevel"] = TokenImpersonationLevel.Identification;
    dict["useDefaultCredentials"] = true;
    dict["domain"] = null;
    dict["username"] = null;
    dict["password"] = null;

var clientSinkProvider = new BinaryClientFormatterSinkProvider();
    var serverSinkProvider = new BinaryServerFormatterSinkProvider
                        {
                            TypeFilterLevel = TypeFilterLevel.Full
                        };

    tcpChannel = new TcpChannel(dict, clientSinkProvider, serverSinkProvider);
    ChannelServices.RegisterChannel(tcpChannel, false);


Thread.CurrentPrincipal.Identity - Возвращает пользователя, которого указывали при создании первого соединения, а не текущего пользователя системы!!!

Если пытаться реконнектиться по полным кредам(domain, username и password) то Thread.CurrentPrincipal.Identity возвращает правильного пользователя.

В чем может быть причина?


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Moid
Дата 23.4.2013, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3





--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Moid
Дата 29.4.2013, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Зметил, через 15-20 мин после первой попытки коннект проходит. Пытался выставлять минимальный таймаут, поведение прежнее.


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.