Я хочу позволить удаленным администраторам (с локальными или доменными учетными данными) управлять моей службой Windows через привязку WCF TCP. Для этого мне нужно аутентифицировать удаленного пользователя как администратора. Я могу проверить основного пользователя / роли, но не знаю, как запросить у удаленного пользователя правильные данные пользователя / токен.
Это связано с моим предыдущим вопросом о Ограничение конечной точки WCF TCP для администраторов . Вместо добавления [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
к моему методу ограниченного обслуживания и перехвата SecurityException
, кажется, я могу проверить это с помощью:
if (!System.Threading.Thread.CurrentPrincipal.IsInRole("Administrators"))
return MethodResult.AccessDenied;
// haven't tested if it's the service thread or the remote user yet.
Как запросить у удаленного пользователя проверку подлинности Windows, если был возвращен результат «Отказано в доступе», чтобы я мог повторно инициализировать соединение как другой участник?
Конечно, изменение должно быть осуществлено в клиентском приложении удаленного пользователя. Возможно, есть более чистый WCF способ сделать это?
Редактировать: Поиск "олицетворения .net" привел меня к this в CodeProject. У меня не было возможности посмотреть, но это может быть путь.