2017-04-26 3 views
0

Ich muss eine Authentifizierung zwischen meinem Frontend Angular und ASP.NET Web Api Backend erstellen.Angular Authentifizierung mit ASP.NET Web Api

Die Anforderungen sind:

  • Ich brauche 2 verschiedene Login-Seiten (1 mit einem klassischen Login-Bildschirm und 1 einen mit einem klassischen Anmeldebildschirm + LinkedIn)

ich keine finden kann aktuelle Dokumentation darüber, wie ich das machen soll ... Ich habe nach https://auth0.com/ gesucht, aber sie verwenden ein Paket, das von meiner Web-API-Version nicht mehr unterstützt wird.

Meine Forschung hat auch gelernt, dass ich wahrscheinlich JWT verwenden sollte, aber ich habe eine schwierige Zeit, dies in meinem Web-API zu bauen.

Kann mir bitte jemand die richtige Dokumentation geben? Ich weiß, dass es eine eingebaute Authentifizierung gibt, aber ich weiß nicht, wie gut diese ist und wie Sie sie mit JWT verwenden sollten. Alles, was ich im Internet finde, ist veraltet ....

Ihre Hilfe wird sehr geschätzt.

Antwort

0

Dies ist der Fluss Sie tun müssen, um einen Benutzer mit linkedin zu authentifizieren:
Angular Teil:
1.redirect dem Benutzer mit der Abfrage params angefordert, zum Beispiel:

    var req = { 
        response_type: "code", 
        client_id: "Your Client ID", 
        redirect_uri: location.origin + location.pathname, 
        state: "DCESFWf45A53sdfKef434" 
       }; 
       window.location.href = linkedinAuthorizationUrl + ObjecttoParams(req); 

2.Nachdem der Benutzer authentifiziert ist, führt linkedin den Benutzer zurück zu Ihrem redirect_url mit dem zusätzlichen Abfrageparameter code, Ihr eckiger Controller sollte ihn sammeln und an Ihre Webapi-Methode senden für den nächsten Schritt.
WebAPI Teil:
3.Sobald geschrieben Sie den linkedin-Code in Ihre WebAPI müssen Sie mit linkedin api (HTTP POST), zum Beispiel Token Austausch:

using (WebClient wc = new WebClient()){ 
string RedirectUrl = providerLogin.RedirectUrl; 
//Exchange tokens with linkedin      
byte[] resultAsBytes = 
wc.UploadValues("https://www.linkedin.com/oauth/v2/accessToken", new 
NameValueCollection() 
       { 
       { "grant_type", "authorization_code" }, 
       { "code", "THE CODE YOU RECEIVED FROM THE CLIENT" }, 
       {"redirect_uri",RedirectUrl }, 
       {"client_id", "YOUR LINKEDIN KEY"}, 
       {"client_secret", "YOUR LINKEDIN PASSWORD"} 
         }); 

string resultAsString = 
System.Text.Encoding.UTF8.GetString(resultAsBytes); 
         var resultAsJson = JObject.Parse(resultAsString); 
         string accessToken = 
resultAsJson["access_token"].ToString(); 
} 

4.Last Teil - wenn Sie haben das Zugriffstoken Sie benötigen GET-Anforderung an linkedin API durchzuführen, um die Details des Benutzers zu erhalten:

using (WebClient wc = new WebClient()){ 
wc.Headers.Add("Authorization", "Bearer " + accessToken); 
var json = wc.DownloadString("https://api.linkedin.com/v1/people/~: 
(email-address,id,first-name,last-name,picture-url,public-profile-url)? 
format=json"); 
resultAsJson = JObject.Parse(json); 
} 

Und das ist es! Ich hoffe alles ist klar und du verstehst meinen Code. Viel Glück!

Verwandte Themen