2016-03-22 9 views
1

Ich habe ein komplexes Projekt, bestehend aus einer ASP MVC-Website, ASP SignalR-Hub und Xamarin Mobile App (alle drei separaten Projekte). Da das ASP MVC-Web den SignalR-Hub referenziert und beide zusammen gehostet werden, kann es nur eine OWIN-Startup-Klasse für beide Projekte geben (andernfalls erhalte ich den Fehler, dass es nur eine einzige OWIN-Startup-Klasse geben kann). Und da ich auch ASP Identity in der Web App verwende, rufe ich die app.UseCookieAuthentication Methode an, die dann einen Cookie benötigt, bevor ich mit dem SignalR Hub kommunizieren darf. Somit ist die Kommunikation zwischen der Xamarin Mobile App und dem SignalR-Hub nicht möglich.So verwenden Sie Cookie-Authentifizierung in Xamarin SignalR

Ich glaube, diese Frage kann auf zwei verschiedene Arten zu beantworten:

  1. Ist es möglich, Cookie-Authentifizierung nur in dem Web-App und nicht in dem SignalR Hub zu verwenden? Entweder durch Erstellen von 2 OWIN Startup-Klassen, oder durch Angabe, für welche Anfragen der Cookie wirklich benötigt wird?
  2. Wenn die obige Lösung nicht möglich/"richtig" ist, wie erreiche ich die Cookie-Authentifizierung in der Xamarin App? Die official web schlägt vor, response.Cookies[FormsAuthentication.FormsCookieName] zu verwenden, aber FormsAuthentication.FormsCookieName ist in Xamarin nicht verfügbar. Wie soll ich den Cookie erstellen? Und kann ich dann vor dem Zugriff auf den SignalR-Hub die Login-Methode der Web-App aufrufen?

Antwort

0

Es ist sicherlich möglich, Authentifizierungscookies von Xamarin zu übergeben. Auf einer Ebene machen Sie einen http-Aufruf; http-Aufrufe können Header enthalten, und ein Cookie ist nur ein spezialisierter Header. Untersuchen Sie den HTTP-Verkehr, den Sie mit der funktionierenden Interaktion haben, und beachten Sie, dass eine Kopfzeile mit einem Namen in der Form von .aspnetcookie und Wert in der Zeile name = reallyongongstringoflettersandnumbers vorhanden sein sollte. Sie können eine API-Methode erstellen, die einen Benutzer und ein Kennwort annimmt und den Benutzer autorisiert, den von dieser Anfrage zurückgesendeten Cookie entgegennimmt und ihn zukünftigen Anfragen einschließlich der SignalR-Anfragen hinzufügt. Ich mache genau dasselbe, also zögern Sie nicht, nach mehr Hilfe zu fragen, wenn Sie nicht finden können, was Sie brauchen.

Verwandte Themen