Перехватить вызов метода WCF и «перенаправить» на основе статуса аутентификации - PullRequest
2 голосов
/ 17 марта 2011

Было бы любопытно, если бы был способ проверить, прошла ли проверка подлинности пользователя, прежде чем делать вызов метода, а затем возвращать пользовательский объект и не завершать вызов, если это не так. Например:

Мы устанавливаем принципала пользователя в Application_PostAuthenticateRequest в global.asax для пользователя, выполняющего запрос, если они аутентифицированы, или для анонимного пользователя, если это не так. В настоящее время во всех методах, требующих аутентификации, мы имеем нечто похожее на следующий код:

public Result GetSomeObject()
{
if (HttpContext.Current.Request.IsAuthenticated)
{

}
}

Итог: мы хотим иметь возможность проверить IsAuthenticated ДО того, как мы позволим WCF проникнуть внутрь метода для методов, требующих аутентификации, и, если true, продолжим, если нет, вернем объект Result (JSON) с ошибкой аутентификации.

Ответы [ 3 ]

0 голосов
/ 17 марта 2011

Эта статья может быть отправной точкой для того, что вы ищете: http://pieterderycke.wordpress.com/2010/12/04/extending-wcf-creating-a-logging-component/

0 голосов
/ 16 апреля 2011

То, что вам нужно разработать, называется ServiceAuthorizationManager в WCF.Вы можете найти больше информации об этом на:

http://pieterderycke.wordpress.com/2011/04/07/implementing-restricted-access-to-a-wcf-service-with-the-serviceauthorizationmanager/

0 голосов
/ 17 марта 2011

Вы можете написать собственный httpmodule для перехвата запросов на сервисный уровень и выполнения там аутентификации.

...