Изменение CheckAccessCore (ctx) для разрешения страниц справки WCF без аутентификации - PullRequest
2 голосов
/ 08 марта 2012

Мне нужно применить другой набор политик безопасности к URL-адресам «Справки» службы WCF. Как я могу получить полный URL-адрес службы WCF, а именно: Session или Session.svc?

http://localhost:62302/Session.svc/help
http://localhost:62302/Session.svc/help/operations/GetSession
http://localhost:62302/Session/help
http://localhost:62302/Session/help/operations/GetSession

Поскольку это связано с безопасностью, мне нужно проверять все, что я придумываю против сообщества. Автор здесь предлагает , чтобы я просто проверил, заканчивается ли строка «help», а затем вслепую разрешил этот запрос (что, очевидно, неверно)

Кодовый фрагмент

public class APIKeyAuthorization : ServiceAuthorizationManager
{
     protected override bool CheckAccessCore(OperationContext operationContext)
    {
        if (this.IsHelpPage(operationContext.RequestContext.RequestMessage) || IsValidAPIKey(operationContext))
        {
            return true;
        }
        else
        {
            string key = GetAPIKey(operationContext);

            // Send back an HTML reply
            CreateErrorReply(operationContext, key);
            return false;
        }
    }

    private bool IsHelpPage(Message requestMessage)
    {
        return requestMessage.Headers.To.AbsolutePath.ToLower().EndsWith("help");
    }
 }

полный источник

1 Ответ

0 голосов
/ 19 марта 2012

Возможно, это слишком упрощает ваш первоначальный вопрос, но почему бы не поместить раздел справки в свою незащищенную область?Вы можете создать контроллер справки, единственной целью которого является обслуживание страниц справки.Затем вам нужно будет настроить ваш web.config, чтобы разрешить пользователям доступ к разделу справки без аутентификации.Опять же, это может быть слишком упрощенно, но оно того стоит.

...