2017-06-20 4 views
2

Was ist die beste (oder mindestens eine Option), um einen von IIS gehosteten REST-WCF-Dienst zu sichern, der von JavaScript-Clients aufgerufen wird?IIS WCF-Dienstauthentifizierung, JavaScript-Client

Der Dienst, den ich habe, ist ein REST-Dienst, der GETs und POSTs von den Clients empfängt und es funktioniert gut, über http und https.

Ich habe versucht, Authentifizierung zu implementieren, und ich habe eine Datenbank mit meiner eigenen Struktur für Benutzer und Rollen und die so (also möchte ich Windows-Authentifizierung vermeiden) Ich habe verschiedene Dinge versucht, aber ich kann ' t nichts zur Arbeit bringen.

Letzte Sache, die ich versucht habe, ist Basic Authentication (Transport) mit einem ServiceAuthorizationManager und UserName Auth (Message) mit einem benutzerdefinierten Validator.

Ich weiß nicht, ob ich den benutzerdefinierten Validator (erben von System.IdentityModel.Selectors.UserNamePasswordValidator) mit Standardauthentifizierung verwenden kann, oder wenn ich Benutzernamen Anmeldeinformationen in den http (s) REST-Anforderungen hinzufügen kann (vielleicht muss ein SOAP-Dienst sein?).

Auch ich möchte etwas wie eine benutzerdefinierte RoleProvider verwenden, um Methodenzugriff basierend auf Benutzergruppen/Rollen zu steuern.

Danke.

+0

Nicht wirklich eine Antwort, aber ich befolge deine Frage, wie ich ein kommendes Projekt habe, das sehr ähnlich ist. Ich habe dies am Horizont gespeichert, da ich weiß, dass ich Token-Auth implementieren möchte, kann es lesenswert sein oder für Ihre Bedürfnisse nutzlos sein. Es könnte nicht schaden, es zu teilen. http://www.developerhandbook.com/c-sharp/create-restful-api-authentication-using-web-api-jwt/ –

+1

@TravisActon Ich glaube nicht, dass es genau das ist, was ich brauche, aber trotzdem danke. Ich denke, ich habe es endlich richtig verstanden.Ein Hauptproblem war, dass ich die erste Authentifizierung ohne einen Windows-Benutzer nicht schaffen konnte und ich benutzerdefinierte Benutzer hatte. Wenn es wie vorgesehen funktioniert, werde ich den entsprechenden Code als Antwort posten – mikepa88

+0

Es wird dringend empfohlen, dass Sie HTTPS erzwingen, wenn Sie die Standardauthentifizierung verwenden - andernfalls werden Ihre Benutzerdaten vom Client im Klartext über das Netzwerk gesendet. –

Antwort

2

Es gibt einige Möglichkeiten, dies zu tun:

** 1. Verwenden der Clientzertifikatauthentifizierung

Sehen Sie diese Artikel: **

Sie können Ihren Kunden basiert auf der Unbedenklichkeits sie passieren (mit Daumenabdruck) autorisieren und Sie können sie leicht kategorisieren.

2. Implementieren Sie die Standardauthentifizierung mit dem SQL-Mitgliedschaftsanbieter.

Siehe diese Artikel:

Sie einen Anruf nehmen, was am besten Ihren Zweck dient und was wird leichter sein, in Zukunft aufrecht zu erhalten. Das Zertifikatsmanagement ist meistens ein Schmerz, hat jedoch seine eigenen Vorteile. Ich persönlich würde mit der zweiten Option gehen, die Basic Auth mit SQL-Mitgliedschaft Provider verwendet.