Webhttpbinding con https e autenticazione con usernameppasswordvalidator se ospitato in IIS

StackOverflow https://stackoverflow.com/questions/6354787

  •  28-10-2019
  •  | 
  •  

Domanda

Sto cercando di impostare un servizio WCF ospitato in IIS che espone un endpoint che funge da servizio REST che produce dati JSON e voglio utilizzare HTTPS. Voglio prendermi cura dell'autenticazione dell'utente da solo con l'aiuto di UsernamePassWordValidator, poiché gli utenti sono archiviati in un database.

Al momento sto usando un webhttpbinding per ottenere la riflessione di riposo. Il mio problema inizia quando provo a abilitare HTTPS (impostazione della modalità di sicurezza sul trasporto). Ho un certificato SSL sul lato server (auto firmato per ora), quindi va tutto bene, ma non so come configurare il ClientCredentialType di trasporto del vincolo in modo che le credenziali vengano trasmesse alla mia implementazione di UsernamePasswordValidator.

Ho cercato su Google molto, ma non riesco a trovare nulla di buono. Se lo capisco correttamente, IIS gestisce l'autenticazione prima di WCF e non c'è niente da fare al riguardo? Preferirei davvero non usare un fornitore di iscrizione ASP.NET, ma forse questo è un approccio o c'è un altro modo?

Grazie!

EDIT: trovato questo. Non proprio quello che speravo ...

È stato utile?

Soluzione 2

Dopo un sacco di Google in giro ho trovato un paio di possibili soluzioni.

Il modo consigliato Risolvere l'autenticazione con i servizi WCF RESTful ospitati in IIS sembra essere usare i token. O con l'aiuto di un'implementazione di terze parti di OAuth o per implementare qualcosa il tuo se stesso. Tuttavia, questo mi darà alcuni problemi con il mio endpoint nettcp e probabilmente non sarò in grado di utilizzare la stessa implementazione per entrambi gli endpoint (poiché dovrò effettuare una convalida token sulle chiamate che arrivano tramite l'endpoint WebHTTP)

La soluzione Dato da Ladislav Mrnka sembra essere valido.

Altri suggerimenti

Non puoi usare UserName Credenziali: questa è l'autenticazione del livello di messaggio attraverso l'intestazione SOAP ma JSON Data Exchange non ha tale intestazione. Prova a configurare Basic Credenziali nell'elemento di trasporto (= autenticazione del livello di trasporto). Dovrebbe funzionare con validatore di password personalizzato poiché .NET 3.5. Dovrai passare l'intestazione HTTP valida per l'autenticazione di base per autenticare correttamente.

Modificare:

Non l'ho testato con IIS, quindi ci possono essere alcuni problemi perché l'autenticazione del trigger IIS prima che venga eseguito il validatore personalizzato. In tal caso avrai bisogno Modulo HTTP personalizzato per l'autenticazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top