WCF: Где находится GetRolesForUser? все, что я вижу, это GetRolesForCurrentUser - PullRequest
0 голосов
/ 30 января 2010

Когда я создаю пользовательский поставщик ролей путем наследования от RoleProvider, я создаю метод вызывается public override string [] GetRolesForUser (string username) .. Однако, когда я пытаюсь чтобы использовать эту ссылку на сервис, все, к чему я имею доступ - это GetRolesForCurrentUser (). Оно работает и вызывает мой метод за кадром хорошо. Как в, GetRoleseForCurrentUser передает текущий пользователь в мой метод, так что все хорошо. Но мне интересно, есть ли способ для меня также выставить мой оригинальный метод (тот, который принимает аргумент), или я что-то упустил?

1 Ответ

0 голосов
/ 30 января 2010

Ну, во-первых, я должен предположить некоторые вещи, вы используете аутентификацию слоя сообщений с именем пользователя / паролем и пользовательский поставщик ролей для авторизации слоя сообщений.

Если вы делаете это, убедитесь, что вы защищаете Транспортный уровень

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

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

Если это ваша цель, проверьте эту ссылку

...