L'API Web ASP.Net rende obbligatorio l'HTTPS

2

C'è un modo programmatico in cui posso autorizzare l'HTTPS nella mia API Web ASP.Net? Ho bisogno di eseguire questo per tutti i metodi HTTP nella mia API Web.

Possiamo imporre HTTPS anche a specifici messaggi HTTP?

Si noti che ho bisogno di farlo in modo programmatico nel mio back-end ASP.Net.

    
posta Jake 23.01.2017 - 05:35
fonte

3 risposte

2

A meno che non abbia frainteso la tua domanda, non saresti in grado di creare solo un RequireHttpsAttribute (ereditato da ActionFilter ) che fa questo e decorare i tuoi controller / azioni con esso?

Al suo interno, controlla lo schema uri della richiesta e non consentire la restituzione della richiesta vietata se non corrisponde allo schema corretto.

    
risposta data 23.01.2017 - 10:27
fonte
0

Non penso che tu possa farlo nel tuo back-end. Puoi comunque vedere HSTS che lo farà per te.

link

Dovrai configurarlo in IIS

    
risposta data 23.01.2017 - 10:02
fonte
0

Penso che @Jake stia cercando una soluzione programmatica piuttosto che un aggiornamento di configurazione. È meglio se blocchi la tua richiesta nel back-end se non arriva attraverso il canale TLS.

Quello che puoi fare è creare una classe filtro personalizzata ereditata dalla classe ActionFilterAttribute. Quindi puoi sostituire il metodo OnActionExecuting per soddisfare i tuoi requisiti. È possibile verificare la richiesta contro Uri.UriSchemeHttps ed eseguire un'azione appropriata.

Di seguito è riportato un codice di esempio (si noti che sto dando questo esempio: potrebbe non essere adatto al 100% per l'ambiente di produzione).

public class MyHttpsOnlyFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext context)
    {
    var request = context.Request;
    if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
    {
        var response = request.CreateResponse(HttpStatusCode.Forbidden);
        response.Content = new StringContent("This API accepts only HTTPS requests");
        context.Response = response;
    }
}
    
risposta data 23.01.2017 - 22:47
fonte

Leggi altre domande sui tag