2012-09-26 18 views
6

Sto creando un servizio RESTful utilizzando l'API Web ASP.NET con autenticazione basata su token personalizzato. Il cliente invierà le credenziali alla prima chiamata. Il servizio creerà un token crittografato utilizzando i dettagli dell'utente e questo token verrà utilizzato per l'autenticazione da questo punto in poi. Ora il servizio deve inviare questo token al client. Inizialmente ho mantenuto il token in un'intestazione di risposta personalizzata HTTP in modo che il client potesse leggere il valore indipendentemente dai dati restituiti dal servizio. Questo ha funzionato bene quando il client e il servizio si trovano nello stesso dominio, ma non sono riusciti nello scenario del dominio incrociato. Ho abilitato CORS al mio servizio e aggiunto tutti i tipi di intestazioni come "Access-Control-Expose-Headers", "Access-Control-Allow-Origin: *" ecc. Ma il client cross-domain non è in grado di leggere l'intestazione della risposta personalizzata Ho creato che è "SecureToken:". Ho visto in un paio di post che i browser Web hanno alcuni problemi con la lettura di intestazioni di risposta personalizzata in scenari cross domain. Quindi ora sto pensando di inviare il token sicuro attraverso una classe base comune di tutti gli oggetti ViewModel/data inviati dal servizio.Come inviare token sicuro dal servizio RESTful?

Da questo contesto devo paio di domande:

  1. Qual è il posto migliore per inviare i token sicuri personalizzato. È nell'intestazione della risposta o come una proprietà comune nella classe base delle classi ViewModel/data?

  2. c'è un'intestazione di risposta HTTP standard che posso utilizzare per inviare token e informazioni personalizzate in modo che anche i client del dominio incrociato possano anche leggerlo?

Qualsiasi aiuto sarà molto apprezzato! Grazie!

+0

Ciao tpeczek - Grazie per aver dedicato del tempo a dare un'occhiata a questa domanda. Ho visto questo articolo prima: http: //codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/. Ho già implementato l'autenticazione basata su token che utilizza la crittografia a chiave privata. La domanda è come inviare un token aggiornato (quando il timeout della sessione viene aggiornato, viene generato un nuovo token) senza disconnettere l'utente. Un'intestazione di risposta specifica era l'opzione migliore, ma sfortunatamente i client di domini incrociati non possono leggere le intestazioni di risposta non standard – Whizkid747

risposta

2

L'intestazione Authorization è progettata per questo. Controllare section 14.8 in questo collegamento per i dettagli su come usarlo.

+1

Non è possibile Autorizzare un'intestazione di richiesta? Stavo chiedendo l'intestazione "Response" di Http. – Whizkid747

+1

L'autorizzazione è un'intestazione valida sia per la richiesta che per la risposta. È possibile/utilizzare definitivamente l'intestazione Autorizzazione con uno schema personalizzato per restituire il token –

Problemi correlati