Ну, во-первых, я должен предположить некоторые вещи, вы используете аутентификацию слоя сообщений с именем пользователя / паролем и пользовательский поставщик ролей для авторизации слоя сообщений.
Если вы делаете это, убедитесь, что вы защищаете Транспортный уровень
Смысл метода GetRolesForCurrentUser () заключается в том, что он проверяет текущего пользователя-участника потоков и возвращает все роли для этого пользователя, таким образом, пользователь никогда не сможет выдать себя за кого-то другого. Имя пользователя / пароль должны быть встроены в заголовки сообщений, это происходит автоматически в .net при установке учетных данных прокси на клиенте.
Если пользователю, вызывающему клиент WCF, было разрешено передать свое имя пользователя в качестве параметра, это означает, что поставщик роли по своему дизайну все равно будет аутентифицировать пользователя текущим основным пользователем потоков, а затем вы захотите дополнительно аутентифицировать пользователя с помощью Имя пользователя, переданное в GetRolesForUser (строка username), не имеет смысла, кроме какой-то сложной схемы олицетворения.
Если это ваша цель, проверьте эту ссылку