2012-03-07 3 views
2

Мне нужно применить другой набор политик безопасности к URL-адресам справки в службе WCF. Как я могу получить полный URL-адрес службы WCF, а именно Session или Session.svc?Модификация CheckAccessCore (ctx), чтобы разрешить страницы справки WCF без аутентификации

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 

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

Код СниП

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"); 
    } 
} 

full source

+0

«Здесь автор говорит, что я просто проверяю, заканчивается ли строка в« help », а затем слепо разрешает этот запрос (что явно неверно)». Да, потому что 'http: //example.com/extremely-sensitive-page? Now-i-pwn-you = help' должен быть освобожден от политики безопасности. –

+1

Просто для разъяснения непосвященным ... Майк саркастичен;) – LamonteCristo

ответ

0

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