7 Stimmen

Implementieren von OpenID: Benutzer identifizieren

Das Unternehmen, für das ich arbeite, möchte eine interne Website für die Außenwelt veröffentlichen, möchte aber auch die Besucher auf einfache Weise identifizieren. Einige Funktionen werden für alle Besucher sichtbar sein, aber die meisten müssen für authentifizierte Besucher sichtbar sein. (Und einige Funktionen sind auf Admin-Besucher beschränkt.) Während das Management in Erwägung zieht, unser eigenes Authentifizierungssystem zu implementieren, habe ich vorgeschlagen, einfach eine bereits verfügbare Technologie zu verwenden, die die Verwaltung von Benutzernamen/Passwörtern von uns fernhält. (Weil wir nur Amateure sind, wenn es um Sicherheit geht. Die Authentifizierung muss sehr gut sein.)

Also habe ich mit OpenID von Google angefangen und die Bibliothek untersucht, die sie bereitstellen. Sieht einfach zu verwenden aus und ich kann Tokens bekommen, die mir sagen, dass ein Benutzer authentifiziert ist. Aber wie identifiziere ich diesen Benutzer, damit ich unsere Profilinformationen mit seiner ID/Token/Wasauchimmer verknüpfen kann?

Ich weiß, dass mir etwas fehlt, also um es einfach zu halten: Ich brauche nur ein Beispiel, das zeigt, wie man den Besucher mit Google authentifiziert und dann einen Token zurückbekommt, den ich verwenden kann, um diesen Benutzer für immer zu verknüpfen. (Also kein Sitzungstoken.) Dieser Token könnte dann vom Benutzer verwendet werden, um sein/ihr Profil auszufüllen.

4voto

Andrew Arnott Punkte 77359

Da Ihre Tags darauf hinweisen, dass Sie C# verwenden, empfehle ich DotNetOpenAuth. Es ist kostenlos und beinhaltet Beispiele, die Ihnen zeigen, wie Sie Ihren Token (in OpenID-Begriffen heißt er Claimed Identifier) erhalten können, den Sie verwenden können, um zwischen Benutzern zu unterscheiden.

Um den Claimed Identifier (den dauerhaften Identifier, den Sie suchen) zu erhalten, verwenden Sie, falls Sie die OpenIdTextBox oder OpenIdLogin Steuerelemente verwenden, einfach das LoggedIn-Ereignis und greifen Sie auf die e.ClaimedIdentifier-Eigenschaft zu. Wenn Sie es programmgesteuert machen (ohne Steuerelemente), gibt die OpenIdRelyingParty.GetResponse()-Methode eine IAuthenticationResponse-Schnittstelle zurück, die eine ClaimedIdentifier-Eigenschaft hat, auf die Sie zugreifen können.

Dann können Sie einen ASP.NET-Rollenanbieter implementieren (ziemlich trivial, wirklich), der es einigen OpenID Claimed Identifiern ermöglicht, zu einer Admin-Rolle zu gehören. Dadurch können Sie Ihre Standard-ASP.NET-Autorisierungstechniken verwenden, um Personen basierend auf ihrer Authentifizierung schrittweise auszusperren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X