Авторизация при Remoting
От: xandr  
Дата: 11.03.05 22:54
Оценка:
Хочу реализовать следующее:

(Клиент и Сервер — win forms приложения.)

При соединении с сервером, клиент передает логин и пароль(хэш).
Сервер проверяет по БД и при успешности сохраняет в CallContext
что-то вроде SESSION_ID.

Теперь то, что не совсем ясно:

Я думаю вешать на каждый метод сервера атрибут, наподоби

[PrincipalPermissionAttribute(SecurityAction.Demand, Role="Admin")]
public void Method1()
{
//...
}

Для того, чтобы это работало, я должен для определенного клиента вызвать:

System.AppDomain.CurrentDomain.SetThreadPrincipal(
new CustomPrincipal(new CustomIdentity(userName))
);

Но это устанавливается для всего потока. И с этим потоком работают разные клиенты.

Подскажите решение?
Re: Авторизация при Remoting
От: TK Лес кывт.рф
Дата: 11.03.05 23:41
Оценка: +1
Здравствуйте, xandr, Вы писали:

X>Но это устанавливается для всего потока. И с этим потоком работают разные клиенты.


обычно, с потоком работает только один клиент (если, это не фибер). достаточно просто на время обработки выставлять свой принципал, а по завершении менять его на старый.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Авторизация при Remoting
От: xandr  
Дата: 11.03.05 23:50
Оценка:
Здравствуйте, TK, Вы писали:

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


X>>Но это устанавливается для всего потока. И с этим потоком работают разные клиенты.


TK>обычно, с потоком работает только один клиент (если, это не фибер). достаточно просто на время обработки выставлять свой принципал, а по завершении менять его на старый.


Можно ли регистрацию/дереристрацию засунуть сюда:

public class MyMessageSink: IMessageSink
{

//.....

public virtual IMessage SyncProcessMessage(IMessage msg)
{
// регистрируем принцпала

// { перешлем сообщение след }

// дерегистрируем

return ret_msg;
}

}


Или как по другому лучше сделать, что-бы это происходило автоматом?
Re[3]: Авторизация при Remoting
От: TK Лес кывт.рф
Дата: 12.03.05 00:07
Оценка:
Hello, "xandr"

> TK>обычно, с потоком работает только один клиент (если, это не фибер). достаточно просто на время обработки выставлять свой принципал, а по завершении менять его на старый.

>
> Можно ли регистрацию/дереристрацию засунуть сюда:
> Или как по другому лучше сделать, что-бы это происходило автоматом?

Обычно, так и делают.
Posted via RSDN NNTP Server 1.9
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: Авторизация при Remoting
От: xandr  
Дата: 12.03.05 00:11
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "xandr"


>> TK>обычно, с потоком работает только один клиент (если, это не фибер). достаточно просто на время обработки выставлять свой принципал, а по завершении менять его на старый.

>>
>> Можно ли регистрацию/дереристрацию засунуть сюда:
>> Или как по другому лучше сделать, что-бы это происходило автоматом?

TK>Обычно, так и делают.


OK. Sanx

PS: Может есть кусок рабочего кода из какого-нибудь проекта?
Re[3]: Авторизация при Remoting
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.05 19:20
Оценка:
Здравствуйте, xandr, Вы писали:

X>Можно ли регистрацию/дереристрацию засунуть сюда:


X>public class MyMessageSink: IMessageSink


Лучше авторизацию засовывать в ChannelSink.
... << RSDN@Home 1.1.4 beta 4 rev. 352>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.