Мне нужно применить другой набор политик безопасности к 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");
}
}
«Здесь автор говорит, что я просто проверяю, заканчивается ли строка в« help », а затем слепо разрешает этот запрос (что явно неверно)». Да, потому что 'http: //example.com/extremely-sensitive-page? Now-i-pwn-you = help' должен быть освобожден от политики безопасности. –
Просто для разъяснения непосвященным ... Майк саркастичен;) – LamonteCristo