Это, кажется, что вы ищете, хотя я повторяю предупреждение, что этот подход будет работать только в пределах одного домена (что обычно означает, что это хорошо для интрасети только):
WCF Web Service Authentication based on AD groups
общепринятый ответ показывает, как захватить контекст безопасности пользователя, делающего запрос на обслуживание, путем бурения в этот объект, чтобы определить принадлежность к группе:
WindowsIdentity caller = ServiceSecurityContext.Current.WindowsIdentity;
Вы должны были бы использовать wsHttp или сеть Tcp (в отличие от основного HTTP-привязки), чтобы заставить это работать - эти механизмы привязки предлагают больше возможностей в обмен на меньшую функциональную совместимость с другими платформами. Если вы строго «внутри брандмауэра», привязка netTcp обычно имеет больше смысла, хотя она может использовать порты, которые брандмауэр блокирует по умолчанию. wsHTTP использует стандартные HTTP-порты, которые обычно открыты.
На стороне клиента есть эквивалентные объекты в пространстве имен System.Security.Principal, которые позволят вам также применять политики безопасности.
Вы собираетесь развернуть это или использовать его в одной организации? В любом случае, подход, который вы принимаете, звучит сложно, чтобы поддержать ... Если он находится в одной организации, я бы позволил sysadmin обрабатывать его вручную, а не пытаться установить это из кода. Если это для развертывания, вам, скорее всего, повезет больше, используя традиционный вход пользователя или привязав к чему-то вроде Azure AD для аутентификации. –
Я знаю, что это что-то с услугой Авторизация и поведение на web.config и, возможно, сеансах. –
Я уверен, что WCF включает эту функцию, но имейте в виду, что использование таких групп применимо только к одному домену (т. Е. К сети рабочего места). Люди обычно имеют права администратора на своих персональных компьютерах, поэтому они могут добавлять себя в любую группу, которую они хотят, и если компьютеры не находятся в том же домене, что и сервер, то я думаю, что они разные «группы», даже если локальные группы имеют одно и то же имя. На стороне клиента все это будет в пространстве имен System.Security.Principal, если это поможет любому. Вы можете проверить группы безопасности пользователя с этими классами. –