以下を使用して CustomAuthenticationHandler ハンドラー内に実装されたロジックを介して処理されるセキュリティをすべて必要とするメソッドを含む Web API サービスがあります。
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Security Logic
//Return Task
}
ただし、セキュリティを必要としない、公開したいメソッドがあります。セキュリティ情報を必要としないこの 1 つの方法のためだけに別のサービスを用意しないようにしています。以下は私がこれを行った方法であり、動作します:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.RequestUri.AbsolutePath == "/api/MyPublicNoSecurityNeededMethod")
return base.SendAsync(request, cancellationToken).ContinueWith(task => task.Result);
//Security Logic
//Return Task
}
したがって、私は本質的に早期に戻り、セキュリティ ロジックを通過することはありません。このアプローチに何か問題があるのか 、それともこのニーズを処理するためのより安全な方法があるのか 疑問に思っていますか? 答えが URL のなりすましである場合、その方法でリクエストを調べるとバックドアが開かれる可能性があります。それを特定しようとしています。これを実装した方法がこのニーズを解決する正しい方法ではない場合、他の方法を脆弱性にさらしたくないだけです。