2013-08-12 8 views
10

ich eine Website, wo ein Benutzer Identität erforderlich ist, ich wirklich nicht lieber ihnen einen weiteren Benutzername/Passwort-Combo schaffen machen, dass siewie kann ich ein Microsoft-Konto auf meiner Website zu authentifizieren

erinnern

gibt es SDK für eine Authentisierung von einem Microsoft-Konto?

+0

ich für eine Beispiel-Website wirklich bin die Hoffnung, – stuck

+0

lol sie haben für diese Sache haben so viele Namen, die ich bin sicher, dass es nach unten schwer zu verfolgen ist. Sie benutzten einen bestimmten Betrag pro Jahr für Websites zu laden, es zu benutzen, und es war nicht sehr erschwinglich für uns kleine Jungs. Ich frage mich, ob es jetzt mit dem Aufstieg von Facebook usw. kostenlos ist. – ps2goat

Antwort

4

Das ist ziemlich einfach als Standard leere Vorlage einer ASP.NET 4.5 Website zeigt, wie OAuth2 Authentifizierung mit Google/Facebook/LiveID/twitter haben.

http://www.asp.net/aspnet/overview/aspnet-45/oauth-in-the-default-aspnet-45-templates

+0

Danke für den Link, es ist mir nicht klar, wie ein Benutzer aussieht, sobald er authiert ist, ich brauche etwas Einzigartiges, um es für meine Datenbank zu indizieren (als eindeutigen Benutzernamen). Dieser Wert kann sich im Laufe der Zeit nicht ändern. Kann ich annehmen, dass die Kombination aus Authentifizierungsquelle und E-Mail eindeutig ist? – stuck

+1

Ja, ist es. Wenn der Identity-Provider eine E-Mail zurückgibt, können Sie sie intern zur Unterscheidung von Benutzern verwenden. Ich denke sogar nicht, dass Sie es mit der Authentifizierungsquelle kombinieren müssen, da alle zuverlässigen Identitätsanbieter E-Mails zuerst validieren, bevor sie sie zurückgeben. Wenn google/facebook/liveid sagt, dass die E-Mail-Adresse des Benutzers [email protected] lautet, können Sie darauf vertrauen, unabhängig davon, welche Auth-Quelle zu diesen drei gehört. –

+0

Der Link ist tot – mayu

3

Überprüfen Sie die Haupt Context-Klasse aus. Sie können es eine localhost (Machine) oder Domain Zusammenhang mit erstellen und die ValidateCrentials (string Benutzername, string Passwort) Methode verwenden, um unter Verwendung von Windows-Anmeldeinformationen zu authentifizieren.

http://msdn.microsoft.com/en-us/library/bb154889.aspx

Hier ist, wie ich es in meiner Website verwendet haben. (Setzen Sie dies in eine POST-Methode Ihres Authentifizierungs-Controllers oder etwas)

Der folgende Code wird einen Benutzernamen sagen "Bob" oder "localhost \ Bob" oder "DOMAIN \ Bob" etc., und erhalten Sie den richtigen PrincipalContext für Authentifizieren des Benutzers. HINWEIS: Hier wird nicht zwischen Groß- und Kleinschreibung unterschieden.

 public bool ValidateCredentials(string username, System.Security.SecureString password) 
    { 
     string domain = Environment.MachineName; 
     if (username.Contains("\\")) 
     { 
      domain = username.Split('\\')[0]; 
      username = username.Split('\\')[1]; 
     } 

     if (domain.Equals("localhost", StringComparison.CurrentCultureIgnoreCase)) 
      domain = Environment.MachineName; 

     if (domain.Equals(Environment.MachineName, StringComparison.CurrentCultureIgnoreCase)) 
      using (PrincipalContext context = new PrincipalContext(ContextType.Machine)) 
      { 
       return context.ValidateCredentials(username, password.ToUnsecureString()); 
      } 
     else 
      using(PrincipalContext context = new PrincipalContext(ContextType.Domain)) 
      { 
       //return context.ValidateCredentials(domain + "\\" + username, password.ToUnsecureString()); 
       return context.ValidateCredentials(username, password.ToUnsecureString()); 
      } 


    } 
1

Meinst du aus einem Active Directory Windows-Konto? Wenn dies der Fall ist, können Sie die Windows-Authentifizierung verwenden und sich von der Indexseite automatisch anmelden lassen.

http://msdn.microsoft.com/en-us/library/ff647405.aspx

die folgenden Befehle im Code hinter Datei Verwenden Sie die relevanten Informationen für die Anmeldung in erhalten:

System.Security.Principal.WindowsIdentity.GetCurrent().Name 
User.Identity.IsAuthenticated 
User.Identity.AuthenticationType 
User.Identity.Name 
2

Microsoft stellt die Live Connect SDK für die Integration von Microsoft Services in Ihre Anwendungen, einschließlich der Microsoft-Konten Identitätsanbieter

Es ist ein spezifisches Beispiel auf Server-Side Scenarios, die alle notwendigen abdecken sollte integriert bekommen.

Verwandte Themen