Frage

Ich habe eine asp.net Web-Anwendung, in dem ich mehrere wir Dienste verwenden, um mehr Ajax-Anfragen zu bedienen. Das Problem ist, wie Sie feststellen können, ob der entsprechende Aufruf der Seite kommt, dass ich gedient haben. Ich benutze Formularauthentifizierung in meinen Seiten. Gibt es eine Möglichkeit, in denen ich den Benutzer autorisieren können die weservice durch die gleiche Formularauthentifizierung aufrufen.

War es hilfreich?

Lösung

Gute Frage, kein Zweifel!

Das erinnert mich ein alt Ich Frage bereits beantwortet. Ihr Szenario ist anders, aber das eigentliche Problem bleibt das gleiche: Wenn Sie einen Web-Service von einem Web-Formular aufrufen, wie Sie Aktien Authentifizierungsdaten mit dem Formular

?

Es gibt keine einfache und close-Form Lösung dafür. Sie können darüber nachdenken, WS-Security in die Web-Service-Implementierung und haben die Web Form authentifizieren sich gegenüber dem Web-Service nach Überprüfung, dass der Benutzer autorisiert ist.

Der Web Service wird nicht teilen Informationen über Login-Benutzer, sofern nicht ausdrücklich als Parameter-Methode übergeben (dh. void PerformAction(string userId, ...)), aber denken Sie daran, dass die Perspektive in diesem Fall ändert sich dramatisch.

Dies ist die beste Idee, die mir in den Sinn kommt, halten jedoch daran, dass Sie entweder tief Redesign Ihrer Web-Service oder Sie sind nicht in der Lage nutzergenerierten Kunden zu lassen (dh. Desktop-Anwendungen gegen Ihre WSDL kompiliert) zu verwenden, um Ihre Service.

[Hinzufügen] jetzt, dass Sie Ihr Szenario erklärt etwas ausführlicher Bit, hier kommt der spannende Teil des Software-Engineering:)

Wie ich in meinem Kommentar, Sie mehrere Möglichkeiten, zum Beispiel:

  1. Speichern von Benutzername / Passwort in Seite Markup (in Javascript-Variablen) und haben JQuery sie als Parameter für den Web-Service senden. WS wird dann auf diese Daten die Anfrage Stationierung authentifizieren. Unrecommended weil wenn jemand Zugang Benutzercache das Passwort ausgenutzt wird (es einfacher Mittel sind jemand das Passwort auf einem gemeinsam genutzten / öffentlichen Computer gestohlen hat, ich werde sie nicht diskutieren), und auch, weil, wenn Sie planen, von einfachen HTTP wechseln auf HTTPS sichere Authentifizierung dann Sie muss sichern den Web-Service zu
  2. Haben Sie Web-Anwendung eine Authentifizierung erzeugen Token , die für den Webdienst gültig ist. Die Idee klingt wie: Erstens, haben ein gemeinsames Objekt zwischen Webapp und Web-Service (wie ein Objekt innerhalb Application Sammlung) oder, wenn Webapp und Web-Service sind auf verschiedenen Servern, verwenden Sie ein DBMS; Dann wird für jeden erfolgreiche Authentifizierung des Webapp, erzeugen eine einzigartige Token (Session-ID in Ordnung sein kann) und es in einer JS Variablen zu speichern, die auf dem Web-Dienst übergeben werden; schließlich, als Web-Service aufgerufen wird, überprüfen Sie gegen dieses gemeinsame Objekt, dass das Token gültig ist (dh. Benutzer authentifizierte und noch angemeldet, mit der Berechtigung zum Zugang, dass Web-Service, so dass sowohl die Authentifizierung und Genehmigung ) , sonst ablehnen

Wenn andere Jungs Ideen haben, zögern Sie nicht zu helfen;)

Andere Tipps

Da Sie Foren Authentifizierung tun Sie können wie folgt tun etwas in Ihrem WebMethod

If Not HttpContext.Current.User.Identity.IsAuthenticated Then
    Return Nothing
End If

Es könnte besser sein, eine Ausnahme zu werfen, wenn Sie ein GET tun aber, dass Art und Weise das leere Ergebnis erhält nicht auf der Client-Seite im Cache gespeichert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top