ASP.NET Web-Api (REST -) : - Authentifizierung über die Benutzer-Anmeldeinformationen oder ein token? Lassen Sie "neuen Benutzer Registrieren"Ressource Passwort kostenlos?
Ich versuche zu erstellen, die einen rest-Dienst mit asp.net web-api und alles ist in Ordnung, aber ich habe jetzt über das, was mit der Authentifizierung zu tun.
Bin ich ein wenig verwirrt davon, wo Sie anfangen, hier ist was ich gedacht haben.
Habe ich eine rest-api bin ich zu entwickeln, das aus einer Reihe von Ressourcen, jede Ressource müssen die Benutzer registriert sein, so was ist die beste Maßnahme dies zu tun? Sollte ich senden Sie einfach den Benutzernamen und das Passwort in den header bei jedem Aufruf des service, so kann ich die Authentifizierung auf dem server mit
AuthorizationFilterAttribute
Ich soll wenigstens verschlüsseln Sie es aber? Ich würde wirklich gerne wissen, was die anderen tun, ich weiß, es ist ein Konzept, erstellen ein token (was ich vermute, wird von kurzer Dauer sein) und somit würde der Benutzer authentifizieren und dann würde erhalten ein token, dieses token würde dann gesendet werden, auf weitere Anrufe am service. Die token müssen, würde kurzlebig sein, nehme ich an? Also, wie würde ich das problem umgehen, wenn das token abläuft?
Ich habe auch eine Ressource, die verwendet wird zum registrieren von neuen Benutzern, die eigentlich nur auf Dinge, die anrufen, dies ist meine clients (android, iphone). ALSO sollte ich es lassen, FREI von Authentifizierungs-Methoden oder setzen Sie eine hart codierte Passwort oder etwas ähnliches, so dass zumindest niemand sonst kann das registrieren neuer Benutzer? In Anbetracht, dass der service public im internet.
Ich würde wirklich zu schätzen jede Rückmeldung überhaupt hat man auf dieser.
Ich weiß einfach nicht scheinen, um in der Lage zu finden die richtige Art dies zu tun, ich sicherlich wollen, um zu versuchen und bekommen es gleich beim ersten mal, so dass ich nicht umgestalten, der service komplett.
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden link, scheint einige sinnvolle DIY-Optionen http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/. Die "Tokens basierend auf Public - /Private-Keys" - Abschnitt umfasst, ist ein Ansatz, den ich verwendet haben, effektiv in der Vergangenheit und würde vielleicht auch Ihnen behilflich sein.
In dem moment, aber ich bin mit http://identityserver.codeplex.com/ der Thinktecture IdentityServer mit OAuth bearer Token ("Resource Owner Password Credential" grant-Typ)... ich finde das ist ein sehr guter Satz von code und Beispielen aus der Arbeit und haben IOS-clients Beschaffung von Token und ruft die WebApi.
Wenn Sie wirklich müssen sichern Sie sich Ihre Registrierungs-Bildschirm, Sie könnten vielleicht Hilfe von client-Zertifikaten auf den Geräten installiert zu authentifizieren... wieder die Thinktecture-service könnte hier helfen https://identity.thinktecture.com/idsrv/docs/default.htm?RequestingatokenusingOAuth2.html. Obwohl, wenn Sie die Registrierung sichern Was sind best practices für die Aktivierung/Registrierung/Passwort-reset-links in E-Mails mit nonce z.B. E-Mail-Bestätigungen und-Aktivierungen usw. es mag sicher sein zu lassen, öffentlich zugänglich - dies alles hängt von Ihren business-Anforderungen und den gewünschten anmelden workflow.
Sollten Sie zumindest mit dem Transport Level security SSL-aber wie schlagen Sie vor message-level Sicherheit, z.B. Verschlüsselung Token ist sehr ratsam - die OAuth-spec hat etwas zu sagen über diese http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#mitigation.
Bezüglich ablaufender Token - wir neigen dazu zu verfallen, unsere Token mit der gleichen Frequenz wie unser Kennwort-änderung der Politik; obwohl die Beibehaltung der Gültigkeit Zeit down ist wichtig (zur Minimierung der Auswirkungen von token-Diebstahl) und eine überlegung, um die balance gegen Ihre Anforderungen. OAuth hat das Konzept der refresh-Token Warum OAuth v2 Haben Beide Access-und Refresh-Tokens? einige Diskussionen und links rund um dieses Thema hier, wir sind derzeit nicht mit diesem Ansatz, der als ID-server verwenden wir derzeit nicht unterstützen.
Halten Sie Ihre Jetons sicher ist auch eine überlegung, z.B. sind wir mit dem Schlüsselbund in IOS, aber denke auch über die Mobile Device Management-Richtlinien, wenn möglich, als ob diese tokens oder Passwörter sind das Gerät, Sie könnten gestohlen werden, schau vielleicht mal in die jailbreak-Erkennung, sperren, Bildschirm, Vollstreckung etc.