2017-08-26 1 views
2

Ich bin neu in Azure, C# und Web-API, also zuerst möchte ich mich im Voraus dafür entschuldigen, weil dies wie eine dumme Frage klingen mag.Microsoft Azure-Authentifizierung mit C# web api

Ich möchte nur wissen, ob es möglich ist, dass ich bereits während der Entwicklung meiner C# -Web-API und meiner Frontend-Webanwendung Azure-Authentifizierung verwende? Wie authentifizieren Sie sich, indem Sie das Microsoft-Konto von jemandem verwenden?

Danke!

EDIT

Also habe ich die App bereits basierend auf diesem Link ein: https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-microsoft-authentication

Auf meinem Frontend Web-App, wenn der Benutzer nicht authentifiziert ist es zu Microsoft-Login-Seite umgeleitet wird, wenn ich einzuloggen versucht, erhalte ich die Fehler unter:

enter image description here

A Bitte beachten Sie auch, dass ich noch nichts für Azure bereitgestellt habe, meine Codes sind immer noch lokal. Ich brauche nur die Authentifizierung für jetzt.

Hoffe jemand kann mir wieder helfen.

Dank

UPDATE

So konnte ich MSAL implementieren, indem die msalx Bibliothek von jemandem erstellt, die es möglich gemacht MSAL in Eckige zu integrieren. Ich kann das Zugriffstoken bereits nach der Anmeldung mit meinem persönlichen Microsoft-Konto erhalten, aber das Problem ist, wenn ich auf meine Web-API zugreife, heißt es immer 401 Nicht autorisiert.

Vielen Dank im Voraus!

enter image description here

Antwort

1

AFAIK, für die Verwendung von App Service Authentication/Authorization, C# Web-API müssen azur eingesetzt werden. App Service Authentication/Authorization (Easy Auth) ist eine Funktion des Azure App Service und ist als natives IIS-Modul implementiert, das in derselben Sandbox wie Ihre azure-Anwendung ausgeführt wird. Weitere Details finden Sie unter Architecture of Azure App Service Authentication/Authorization.

Basierend auf Ihrem Szenario, Sie auf die folgenden Ansätze beziehen könnte:

Verwenden Sie App-Service Authentifizierung/Autorisierung (Easy Auth)

  • configure your App Service application to use Microsoft Account login

  • Zugang https://{your-appname}.azurewebsites.net/.auth/login/microsoftaccount über die Browser, um sicherzustellen, dass Ihre Web-API erfolgreich eingerichtet wurde und nur die Benutzer, die von einem Microsoft-Konto authentifiziert wurden, auf y zugreifen können unsere Web API

  • Für Ihr Front-End-Web-App, könnten Sie die JavaScript client library for Azure Mobile Apps für die Protokollierung nutzen und abrufen der authenticationToken und userId, dann könnten Sie die x-zumo-auth Request-Header mit dem Wert authenticationToken als Token, geben Sie Ihren Web-API für den Zugriff auf wie folgt:

    enter image description here

    weitere Informationen dazu, wie Sie den Benutzer zu authentifizieren, können Sie auf How to: Authenticate users verweisen.

    Hinweis: Für Ihre lokalen SPA, müssen Sie die CORS Einstellung konfigurieren und fügen ZUGELASSEN AUSSEN Redirect URLs unter „Einstellungen> Authentifizierung/Autorisierung“ Ihrer azur Web-App. Für weitere Details können Sie auf diese issue verweisen.

die Authentifizierung in Ihrem Web-API einrichten

  • Sie könnten Ihre OAuth 2.0 Bearer-Authentifizierung mit AD v2.0 Endpunkt einrichten Sie Ihren Web-API sowohl mit Person schützen könnten MSA und Arbeit oder Schulkonten. Informationen zum Erstellen Ihrer Web-API finden Sie unter Secure an MVC web API.

  • Für Ihre Front-End-Web-App, könnten Sie MSAL.js Bibliothek für die Protokollierung nutzen und die access_token abrufen, und das Token verwenden für HTTP bearer request Ihre Web-API-Aufruf.

UPDATE:

Ich benutzte das TodoListService Projekt von AppModelv2-WebAPI-DotNet, dann verwenden Sie die folgende html für meine Kunden wie folgt:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Login</title> 
    <meta charset="utf-8" /> 

    <!-- IE support: add promises polyfill before msal.js --> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js" class="pre"></script> 
    <script src="https://secure.aadcdn.microsoftonline-p.com/lib/0.1.1/js/msal.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
</head> 
<body> 
    <script class="pre"> 
    var userAgentApplication = new Msal.UserAgentApplication("b3dd78af-d9da-459d-bf01-f87104d87450", null, function (errorDes, token, error, tokenType) { 
     // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) 
    }); 

    userAgentApplication.loginPopup(["user.read"]).then(function (token) { 
     var user = userAgentApplication.getUser(); 
     console.log(user); 
     console.log('access token:' + token); 

     InvokeApi(token); 

    }, function (error) { 
     alert('login error:' + error); 
    }); 

    function InvokeApi(token) { 
     $.ajax({ 
      type: "GET", 
      url: "http://localhost:9184/api/values", 
      headers: { 
       'Authorization': 'Bearer ' + token, 
      }, 
     }).done(function (data) { 
      console.log('invoked Web API \'http://localhost:9184/api/values\' with result: ' + data); 
      alert(data); 
     }).fail(function (jqXHR, textStatus) { 
      alert('Error getting data'); 
     }); 
    } 
    </script> 
</body> 
</html> 

Ergebnis:

enter image description here

Zusätzlich können Sie auf diese Gitprobe JavaScript Single Page Application with an ASP.NET backend, using msal.js verweisen.

+0

Also im Wesentlichen kann ich Azure-Authentifizierung nur verwenden, wenn meine API oder App dort bereits bereitgestellt wird? Gibt es eine Möglichkeit, Benutzer mithilfe ihres Microsoft-Kontos zu authentifizieren, ohne sie in Azure bereitzustellen? – Jed

+1

Für die integrierte Easy Auth-Funktion konnten Sie sie nur für Azure verwenden. Je nach Ihren Anforderungen können Sie die Option 2 nutzen, dann kann Ihre Web-API ohne Bereitstellung in Azure ausgeführt werden. Sie können den obigen Anleitungen folgen, um Ihre Web-API zu erstellen und MSAL.js für die Authentifizierung mit MSA zu verwenden, und dann den Token für den Zugriff auf Ihre Web-API verwenden. –

+0

Okay, was bedeutet auch, dass ich kein Azure-Abonnement benötige, wenn ich Web-Apps entwickle, die später dort bereitgestellt werden? Übrigens, danke für deine Antwort, es hat meine Anforderungen geklärt. Ich werde mit der zweiten Option gehen. – Jed

2

Basierend auf meinem Verständnis versuchen Sie, die Benutzer mit ihrem Microsoft-Konto zu authentifizieren.

Im Folgenden finden Sie eine nützliche Anleitung zum Einrichten und Aktivieren Ihrer Webanwendung für die Verwendung der Authentifizierung basierend auf dem Konto von Microsoft.

https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-microsoft-authentication

Außerdem ist es ein Ja, dass man es vor Ort nach dem Einrichten und Konfigurieren der lokalen App testen kann.

Hier ist eine GitHub Repo-Beispiel-Web-App, die Microsoft-Konto-Authentifizierung verwenden.

https://github.com/lexdevel/MicrosoftAccountAuthentication

+0

Hallo vielen Dank für Ihre Antwort Ich habe meine Frage bearbeitet. Bitte sehen.Danke – Jed

Verwandte Themen