2014-12-01 15 views
5

Sto facendo funzionare un sito MVC lungo il lato Umbraco. Il sito MVC gestisce la propria autenticazione completamente separata da Umbraco e l'autenticazione dei moduli ASP.NET per quella materia. Imposta un cookie e lo utilizza internamente per tenere traccia delle cose.Umbraco 7 cookie personalizzati

Tutto funziona bene per la maggior parte, ma se io sono inserito nel mio sito MVC con il suddetto insieme di cookie, cerco di accedere alla sezione admin Umbraco utilizzando le credenziali Umbraco corrette, mi autentica e mi reindirizza al sezione admin ma le chiamate WebAPI iniziano a fallire. Il primo è una chiamata a: /umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck che restituisce una risposta di errore HTTP 417 Missing token null.

Se elimino il mio cookie personalizzato e aggiorno la pagina, tutto funziona correttamente.

Non capisco come i miei cookie possano interferire con quelli di Umbraco. Non sta utilizzando l'autenticazione di moduli ASP.NET o altro.

risposta

1

Il mio pensiero iniziale è che per errore si è utilizzato un valore chiave per il cookie prenotato da Umbraco, che potrebbe causare la lettura errata del cookie, causando problemi. La soluzione a questo sarebbe semplicemente rinominare il tuo cookie.

Se questo non è il caso che ho un'altra teoria:

richieste HTTP saranno sempre includere tutti i cookie che il percorso/dominio corrisponde al dominio della risorsa si richiede. Vengono ordinati per lunghezza del percorso principalmente e in secondo luogo per ora di creazione. Se il backend Umbraco per qualche ragione trova il cookie utilizzato per l'autenticazione dal suo numero di indice (non sarebbe nemmeno sorpreso) nella lista, piuttosto che il valore chiave, il tuo cookie personalizzato causerebbe lo spostamento dell'indice, facendo in modo che Umbraco guardi all'errore cookie

Quindi, se la ridenominazione del cookie non ha fatto nulla, una cosa divertente da provare potrebbe essere quella di impostare il percorso del cookie sul percorso più breve possibile, che renderebbe il browser mettere il cookie più in basso nella lista, quindi l'indice non si sposterà.

E 'solo una teoria, però, quindi sono interessati a sentire come va :)

+1

Questo è il pezzo in questione -> https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web/Editors/UpdateCheckController.cs Non vedo alcuna indicazione che i cookie vengano trovati da un numero di indice, mi spiace :) – Sniffdk

+0

Sto usando una sessione nel backoffice. Nel momento in cui viene impostata la sessione, viene aggiunto un cookie aggiuntivo chiamato ASP.NET_SessionId. Il cookie inizia con la lettera 'A' ed è il primo nell'indice. Dopo di che ho anche questi errori. –

+0

@Sniffdk In realtà sono abbastanza felice di sentirlo :) – Scherling

1

Questo errore si verifica perché la richiesta non sta inviando la richiesta angolari intestazioni CSRF + biscotto. Non sono sicuro del motivo per cui questo sarebbe il caso, ma sembra strano se si tratta di un errore del tuo cookie personalizzato. Forse puoi dirci qualche altra informazione sul tuo problema: nome/valore del cookie, passaggi da riprodurre, versione specifica di Umbraco, ambiente di hosting, ecc ....

Alcune informazioni su ciò che sta succedendo, il codice che restituisce questo errore è qui:

https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs#L94

Questo è dove sono impostati i cookie CSRF:

https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/SetAngularAntiForgeryTokensAttribute.cs

e questo attributo è applicato a due azioni, una per il login e una quando recuperiamo i dati dell'utente corrente:

questo è dove l'intestazione sorge nel JS:

https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web.UI.Client/src/init.js#L11

A seconda del vostro ambiente di hosting/setup v'è stato strane segnalazioni di alcuni firewall di stripping/modifica dei dati, ad esempio:

http://our.umbraco.org/forum/umbraco-7/using-umbraco-7/47340-Umbraco-7-plus-ISA-Server-2006

Si spera che, date le informazioni sopra riportate, si possa essere in grado di individuare dove inizia il problema.