Tutorial: Hinzufügen der Anmeldung bei Microsoft zu einer ASP.NET-Web-AppTutorial: Add sign-in to Microsoft to an ASP.NET web app

In diesem Tutorial erstellen Sie eine ASP.NET MVC-Web-App, in der Benutzer über die OWIN-Middleware (Open Web Interface for .NET) und die Microsoft Identity Platform angemeldet werden.In this tutorial, you build an ASP.NET MVC web app that signs in users by using the Open Web Interface for .NET (OWIN) middleware and the Microsoft identity platform.

Am Ende dieser Anleitung kann Ihre Anwendung Anmeldungen von persönlichen Konten (etwa outlook.com und live.com) akzeptieren.When you've completed this guide, your application will be able to accept sign-ins of personal accounts from the likes of outlook.com and live.com. Darüber hinaus können sich Geschäfts-, Schul- und Unikonten von Unternehmen oder Organisationen, die in Microsoft Identity Platform integriert wurden, bei Ihrer App anmelden.Additionally, work and school accounts from any company or organization that's integrated with Microsoft identity platform will be able to sign in to your app.

Dieses Tutorial umfasst folgende Punkte:In this tutorial:

  • Erstellen eines Projekts namens ASP.NET-Webanwendung in Visual StudioCreate an ASP.NET Web Application project in Visual Studio
  • Hinzufügen der offenen Webschnittstelle für die .NET (OWIN)-MiddlewarekomponentenAdd the Open Web Interface for .NET (OWIN) middleware components
  • Hinzufügen von Code zum Unterstützen der Benutzeranmeldung und -abmeldungAdd code to support user sign-in and sign-out
  • Registrieren der App im Azure-PortalRegister the app in the Azure portal
  • Testen der AppTest the app

VoraussetzungenPrerequisites

Funktionsweise der über diesen Leitfaden generierten Beispiel-AppHow the sample app generated by this guide works

Zeigt, wie die in diesem Tutorial generierte Beispiel-App funktioniert

Die erstellte Beispielanwendung basiert auf dem Szenario, in dem Sie den Browser für den Zugriff auf eine ASP.NET-Website verwenden und aufgefordert werden, sich über die Schaltfläche „Anmelden“ zu authentifizieren.The sample application you create is based on a scenario where you use the browser to access an ASP.NET website that prompts a user to authenticate through a sign-in button. In diesem Szenario wird ein Großteil der Arbeit zum Rendern der Webseite auf dem Server erledigt.In this scenario, most of the work to render the web page occurs on the server side.

BibliothekenLibraries

In dieser Anleitung werden die folgenden Bibliotheken verwendet:This guide uses the following libraries:

BibliothekLibrary BESCHREIBUNGDescription
Microsoft.Owin.Security.OpenIdConnectMicrosoft.Owin.Security.OpenIdConnect Middleware, die einer Anwendung das Verwenden von OpenIDConnect für die Authentifizierung ermöglichtMiddleware that enables an application to use OpenIdConnect for authentication
Microsoft.Owin.Security.CookiesMicrosoft.Owin.Security.Cookies Middleware, die einer Anwendung das Beibehalten der Benutzersitzung mithilfe von Cookies ermöglichtMiddleware that enables an application to maintain a user session by using cookies
Microsoft.Owin.Host.SystemWebMicrosoft.Owin.Host.SystemWeb Middleware, die das Ausführen von OWIN-basierten Anwendungen in Internetinformationsdiensten (Internet Information Services, IIS) unter Verwendung der ASP.NET-Anforderungspipeline ermöglichtMiddleware that enables OWIN-based applications to run on Internet Information Services (IIS) by using the ASP.NET request pipeline

Einrichten des ProjektsSet up your project

In diesem Abschnitt werden das Installieren und Konfigurieren der Authentifizierungspipeline über OWIN-Middleware für ein ASP.NET-Projekt mithilfe von OpenID Connect beschrieben.This section describes how to install and configure the authentication pipeline through OWIN middleware on an ASP.NET project by using OpenID Connect.

Möchten Sie stattdessen das Visual Studio-Projekt dieses Beispiels herunterladen?Prefer to download this sample's Visual Studio project instead? Laden Sie ein Projekt herunter, und fahren Sie mit dem Schritt Registrieren Ihrer Anwendung fort, um das Codebeispiel vor der Ausführung zu konfigurieren.Download a project and skip to the Register your application to configure the code sample before executing.

Erstellen des ASP.NET-ProjektsCreate your ASP.NET project

  1. In Visual Studio: Klicken Sie auf Datei > Neu > Projekt.In Visual Studio: Go to File > New > Project.
  2. Wählen Sie unter Visual C#\Web die Option ASP.NET-Webanwendung (.NET Framework) aus.Under Visual C#\Web, select ASP.NET Web Application (.NET Framework).
  3. Geben Sie der Anwendung einen Namen, und klicken Sie auf OK.Name your application and select OK.
  4. Wählen Sie Leer aus, und aktivieren Sie dann das Kontrollkästchen, um MVC-Verweise hinzuzufügen.Select Empty, and then select the check box to add MVC references.

Hinzufügen von AuthentifizierungskomponentenAdd authentication components

  1. In Visual Studio: Navigieren Sie zu Extras > NuGet-Paket-Manager > Paket-Manager-Konsole.In Visual Studio: Go to Tools > NuGet Package Manager > Package Manager Console.

  2. Fügen Sie NuGet-Pakete für OWIN-Middleware hinzu, indem Sie im Fenster „Paket-Manager-Konsole“ Folgendes eingeben:Add OWIN middleware NuGet packages by typing the following in the Package Manager Console window:

    Install-Package Microsoft.Owin.Security.OpenIdConnect
    Install-Package Microsoft.Owin.Security.Cookies
    Install-Package Microsoft.Owin.Host.SystemWeb
    

Informationen zu diesen BibliothekenAbout these libraries

Diese Bibliotheken ermöglichen einmaliges Anmelden (Single Sign-On, SSO) mithilfe von OpenID Connect über die cookiebasierte Authentifizierung.These libraries enable single sign-on (SSO) by using OpenID Connect through cookie-based authentication. Nachdem die Authentifizierung abgeschlossen ist und das Token, das den Benutzer darstellt, an Ihre Anwendung gesendet wurde, erstellt die OWIN-Middleware ein Sitzungscookie.After authentication is completed and the token representing the user is sent to your application, OWIN middleware creates a session cookie. Der Browser verwendet dann dieses Cookie bei nachfolgenden Anforderungen, damit der Benutzer sein Kennwort nicht erneut eingeben muss. Außerdem ist keine weitere Überprüfung erforderlich.The browser then uses this cookie on subsequent requests so that the user doesn't have to retype the password, and no additional verification is needed.

Konfigurieren der AuthentifizierungspipelineConfigure the authentication pipeline

Die folgenden Schritte dienen zum Erstellen der Startup-Klasse der OWIN-Middleware, um die OpenID Connect-Authentifizierung zu konfigurieren.The following steps are used to create an OWIN middleware Startup class to configure OpenID Connect authentication. Diese Klasse wird automatisch ausgeführt, wenn der IIS-Prozess gestartet wird.This class is executed automatically when your IIS process starts.

Tipp

Wenn das Projekt nicht die Datei Startup.cs im Stammordner enthält:If your project doesn't have a Startup.cs file in the root folder:

  1. Klicken Sie mit der rechten Maustaste auf den Stammordner des Projekts, und wählen sie dann Hinzufügen > Neues Element > OWIN-Startup-Klasse aus.Right-click the project's root folder, and then select Add > New Item > OWIN Startup class.
  2. Nennen Sie es Startup.cs.Name it Startup.cs.

Stellen Sie sicher, dass die ausgewählte Klasse eine OWIN-Klasse des Typs „Startup“ und keine C#-Standardklasse ist.Make sure the class selected is an OWIN Startup class and not a standard C# class. Überprüfen Sie dazu, ob [assembly: OwinStartup(typeof({NameSpace}.Startup))] oberhalb des Namespace angezeigt wird.Confirm this by verifying that you see [assembly: OwinStartup(typeof({NameSpace}.Startup))] above the namespace.

  1. Fügen Sie OWIN- und Microsoft.IdentityModel-Verweise zu „Startup.cs“ hinzu:Add OWIN and Microsoft.IdentityModel references to Startup.cs:

    using Microsoft.Owin;
    using Owin;
    using Microsoft.IdentityModel.Protocols.OpenIdConnect;
    using Microsoft.IdentityModel.Tokens;
    using Microsoft.Owin.Security;
    using Microsoft.Owin.Security.Cookies;
    using Microsoft.Owin.Security.OpenIdConnect;
    using Microsoft.Owin.Security.Notifications;
    
  2. Ersetzen Sie die Startup-Klasse durch den folgenden Code:Replace Startup class with the following code:

    public class Startup
    {
        // The Client ID is used by the application to uniquely identify itself to Microsoft identity platform.
        string clientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"];
    
        // RedirectUri is the URL where the user will be redirected to after they sign in.
        string redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"];
    
        // Tenant is the tenant ID (e.g. contoso.onmicrosoft.com, or 'common' for multi-tenant)
        static string tenant = System.Configuration.ConfigurationManager.AppSettings["Tenant"];
    
        // Authority is the URL for authority, composed by Microsoft identity platform endpoint and the tenant name (e.g. https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0)
        string authority = String.Format(System.Globalization.CultureInfo.InvariantCulture, System.Configuration.ConfigurationManager.AppSettings["Authority"], tenant);
    
        /// <summary>
        /// Configure OWIN to use OpenIdConnect
        /// </summary>
        /// <param name="app"></param>
        public void Configuration(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    
            app.UseCookieAuthentication(new CookieAuthenticationOptions());
            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    // Sets the ClientId, authority, RedirectUri as obtained from web.config
                    ClientId = clientId,
                    Authority = authority,
                    RedirectUri = redirectUri,
                    // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
                    PostLogoutRedirectUri = redirectUri,
                    Scope = OpenIdConnectScope.OpenIdProfile,
                    // ResponseType is set to request the id_token - which contains basic information about the signed-in user
                    ResponseType = OpenIdConnectResponseType.IdToken,
                    // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
                    // To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
                    // To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
                    TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = false // This is a simplification
                    },
                    // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = OnAuthenticationFailed
                    }
                }
            );
        }
    
        /// <summary>
        /// Handle failed authentication requests by redirecting the user to the home page with an error in the query string
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context)
        {
            context.HandleResponse();
            context.Response.Redirect("/?errormessage=" + context.Exception.Message);
            return Task.FromResult(0);
        }
    }
    

Hinweis

Zur Vereinfachung dieser Schnellstartanleitung wird ValidateIssuer = false festgelegt. In echten Anwendungen müssen Sie den Aussteller überprüfen.In real applications, you must validate the issuer. Informationen dazu finden Sie in den Beispielen.See the samples to learn how to do that.

Weitere InformationenMore information

Die Parameter, die Sie in OpenIDConnectAuthenticationOptions bereitstellen, dienen als Koordinaten für die Anwendung zur Kommunikation mit Microsoft Identity Platform.The parameters you provide in OpenIDConnectAuthenticationOptions serve as coordinates for the application to communicate with Microsoft identity platform. Da die OpenID Connect-Middleware im Hintergrund Cookies verwendet, müssen Sie außerdem die Cookieauthentifizierung einrichten, wie im Code oben gezeigt.Because the OpenID Connect middleware uses cookies in the background, you must also set up cookie authentication as the preceding code shows. Der ValidateIssuer-Wert weist OpenIdConnect an, den Zugriff nicht auf eine bestimmte Organisation zu beschränken.The ValidateIssuer value tells OpenIdConnect not to restrict access to one specific organization.

Hinzufügen eines Controllers zum Verarbeiten von An- und AbmeldeanforderungenAdd a controller to handle sign-in and sign-out requests

Führen Sie die folgenden Schritte zum Erstellen eines neuen Controllers aus, um An- und Abmeldeverfahren verfügbar zu machen.To create a new controller to expose sign-in and sign-out methods, follow these steps:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner Controller, und wählen Sie Hinzufügen > Controller aus.Right-click the Controllers folder and select Add > Controller.

  2. Wählen Sie MVC (.NET-Version)-Controller – Leer aus.Select MVC (.NET version) Controller – Empty.

  3. Wählen Sie Hinzufügen.Select Add.

  4. Geben Sie ihm den Namen HomeController, und wählen Sie dann Hinzufügen aus.Name it HomeController and then select Add.

  5. Fügen Sie der Klasse OWIN-Verweise hinzu:Add OWIN references to the class:

    using Microsoft.Owin.Security;
    using Microsoft.Owin.Security.Cookies;
    using Microsoft.Owin.Security.OpenIdConnect;
    
  6. Fügen Sie die folgenden beiden Methoden hinzu, um die An- und Abmeldung bei Ihrem Controller zu verarbeiten, indem Sie eine Authentifizierungsaufforderung auslösen:Add the following two methods to handle sign-in and sign-out to your controller by initiating an authentication challenge:

    /// <summary>
    /// Send an OpenID Connect sign-in request.
    /// Alternatively, you can just decorate the SignIn method with the [Authorize] attribute
    /// </summary>
    public void SignIn()
    {
        if (!Request.IsAuthenticated)
        {
            HttpContext.GetOwinContext().Authentication.Challenge(
                new AuthenticationProperties{ RedirectUri = "/" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);
        }
    }
    
    /// <summary>
    /// Send an OpenID Connect sign-out request.
    /// </summary>
    public void SignOut()
    {
        HttpContext.GetOwinContext().Authentication.SignOut(
                OpenIdConnectAuthenticationDefaults.AuthenticationType,
                CookieAuthenticationDefaults.AuthenticationType);
    }
    

Erstellen der App-Startseite für die BenutzeranmeldungCreate the app's home page for user sign-in

Erstellen Sie in Visual Studio eine neue Ansicht, um die Schaltfläche „Anmelden“ hinzuzufügen und Benutzerinformationen nach der Authentifizierung anzuzeigen:In Visual Studio, create a new view to add the sign-in button and to display user information after authentication:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner Ansichten\Start, und wählen Sie Ansicht hinzufügen aus.Right-click the Views\Home folder and select Add View.

  2. Nennen Sie die neue Ansicht Index.Name the new view Index.

  3. Fügen Sie der Datei den folgenden HTML-Code hinzu, der die Schaltfläche „Anmelden“ enthält:Add the following HTML, which includes the sign-in button, to the file:

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Sign in with Microsoft Guide</title>
    </head>
    <body>
    @if (!Request.IsAuthenticated)
    {
        <!-- If the user is not authenticated, display the sign-in button -->
        <a href="@Url.Action("SignIn", "Home")" style="text-decoration: none;">
            <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="300px" height="50px" viewBox="0 0 3278 522" class="SignInButton">
            <style type="text/css">.fil0:hover {fill: #4B4B4B;} .fnt0 {font-size: 260px;font-family: 'Segoe UI Semibold', 'Segoe UI'; text-decoration: none;}</style>
            <rect class="fil0" x="2" y="2" width="3174" height="517" fill="black" />
            <rect x="150" y="129" width="122" height="122" fill="#F35325" />
            <rect x="284" y="129" width="122" height="122" fill="#81BC06" />
            <rect x="150" y="263" width="122" height="122" fill="#05A6F0" />
            <rect x="284" y="263" width="122" height="122" fill="#FFBA08" />
            <text x="470" y="357" fill="white" class="fnt0">Sign in with Microsoft</text>
            </svg>
        </a>
    }
    else
    {
        <span><br/>Hello @System.Security.Claims.ClaimsPrincipal.Current.FindFirst("name").Value;</span>
        <br /><br />
        @Html.ActionLink("See Your Claims", "Index", "Claims")
        <br /><br />
        @Html.ActionLink("Sign out", "SignOut", "Home")
    }
    @if (!string.IsNullOrWhiteSpace(Request.QueryString["errormessage"]))
    {
        <div style="background-color:red;color:white;font-weight: bold;">Error: @Request.QueryString["errormessage"]</div>
    }
    </body>
    </html>
    

Weitere InformationenMore information

Auf dieser Seite wird eine Anmeldeschaltfläche im SVG-Format mit schwarzem Hintergrund hinzugefügt:This page adds a sign-in button in SVG format with a black background:
Schaltfläche „Anmelden mit Microsoft“Sign in with Microsoft button
Weitere Anmeldeschaltflächen finden Sie in den Brandingrichtlinien.For more sign-in buttons, go to the Branding guidelines.

Hinzufügen eines Controllers zum Anzeigen von Ansprüchen des BenutzersAdd a controller to display user's claims

Dieser Controller veranschaulicht die Verwendungen des [Authorize]-Attributs, um einen Controller zu schützen.This controller demonstrates the uses of the [Authorize] attribute to protect a controller. Dieses Attribut beschränkt den Zugriff auf den Controller, indem nur authentifizierte Benutzer zugelassen werden.This attribute restricts access to the controller by allowing only authenticated users. Der folgende Code verwendet das Attribut zum Anzeigen von Benutzeransprüchen, die als Teil der Anmeldung abgerufen wurden:The following code makes use of the attribute to display user claims that were retrieved as part of sign-in:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner Controller, und wählen Sie dann Hinzufügen > Controller aus.Right-click the Controllers folder, and then select Add > Controller.

  2. Wählen Sie MVC {Version}-Controller – Leer aus.Select MVC {version} Controller – Empty.

  3. Wählen Sie Hinzufügen.Select Add.

  4. Nennen Sie diesen Controller ClaimsController.Name it ClaimsController.

  5. Ersetzen Sie den Code Ihrer Controllerklasse durch den folgenden Code.Replace the code of your controller class with the following code. Dadurch wird der Klasse das Attribut [Authorize] hinzugefügt:This adds the [Authorize] attribute to the class:

    [Authorize]
    public class ClaimsController : Controller
    {
        /// <summary>
        /// Add user's claims to viewbag
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            var userClaims = User.Identity as System.Security.Claims.ClaimsIdentity;
    
            //You get the user's first and last name below:
            ViewBag.Name = userClaims?.FindFirst("name")?.Value;
    
            // The 'preferred_username' claim can be used for showing the username
            ViewBag.Username = userClaims?.FindFirst("preferred_username")?.Value;
    
            // The subject/ NameIdentifier claim can be used to uniquely identify the user across the web
            ViewBag.Subject = userClaims?.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;
    
            // TenantId is the unique Tenant Id - which represents an organization in Azure AD
            ViewBag.TenantId = userClaims?.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid")?.Value;
    
            return View();
        }
    }
    

Weitere InformationenMore information

Aufgrund der Verwendung des [Authorize]-Attributs können alle Methoden dieses Controllers nur ausgeführt werden, wenn der Benutzer authentifiziert ist.Because of the use of the [Authorize] attribute, all methods of this controller can be executed only if the user is authenticated. Wenn der Benutzer nicht authentifiziert ist und versucht, auf den Controller zuzugreifen, löst OWIN eine Authentifizierungsaufforderung aus und zwingt den Benutzer, sich zu authentifizieren.If the user isn't authenticated and tries to access the controller, OWIN initiates an authentication challenge and forces the user to authenticate. Der vorherige Code sucht in der Liste der Ansprüche nach bestimmten Benutzerattributen, die im ID-Token des Benutzers enthalten sind.The preceding code looks at the list of claims for specific user attributes included in the user's ID token. Diese Attribute enthalten den vollständigen Namen des Benutzers und den Benutzername sowie die GUID des Antragstellers.These attributes include the user's full name and username, as well as the global user identifier subject. Sie enthalten auch die Mandanten-ID, die die ID der Organisation des Benutzers darstellt.It also contains the Tenant ID, which represents the ID for the user's organization.

Erstellen einer Ansicht zum Anzeigen der Ansprüche des BenutzersCreate a view to display the user's claims

Erstellen Sie in Visual Studio eine neue Ansicht zum Anzeigen der Ansprüche des Benutzers auf einer Webseite:In Visual Studio, create a new view to display the user's claims in a web page:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner Ansichten\Ansprüche, und wählen Sie Ansicht hinzufügen aus.Right-click the Views\Claims folder, and then select Add View.

  2. Nennen Sie die neue Ansicht Index.Name the new view Index.

  3. Fügen Sie der Datei den folgenden HTML-Code hinzu:Add the following HTML to the file:

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Sign in with Microsoft Sample</title>
        <link href="@Url.Content("~/Content/bootstrap.min.css")" rel="stylesheet" type="text/css" />
    </head>
    <body style="padding:50px">
        <h3>Main Claims:</h3>
        <table class="table table-striped table-bordered table-hover">
            <tr><td>Name</td><td>@ViewBag.Name</td></tr>
            <tr><td>Username</td><td>@ViewBag.Username</td></tr>
            <tr><td>Subject</td><td>@ViewBag.Subject</td></tr>
            <tr><td>TenantId</td><td>@ViewBag.TenantId</td></tr>
        </table>
        <br />
        <h3>All Claims:</h3>
        <table class="table table-striped table-bordered table-hover table-condensed">
        @foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims)
        {
            <tr><td>@claim.Type</td><td>@claim.Value</td></tr>
        }
        </table>
        <br />
        <br />
        @Html.ActionLink("Sign out", "SignOut", "Home", null, new { @class = "btn btn-primary" })
    </body>
    </html>
    

Anwendung registrierenRegister your application

Wenn Sie Ihre Anwendung registrieren und die Anwendungsregistrierungsinformationen Ihrer Projektmappe hinzufügen möchten, haben Sie zwei Möglichkeiten:To register your application and add your application registration information to your solution, you have two options:

Option 1: ExpressmodiOption 1: Express mode

Führen Sie zur schnellen Registrierung Ihrer Anwendung die folgenden Schritte aus:To quickly register your application, follow these steps:

  1. Navigieren Sie zum neuen Bereich Azure-Portal – App-Registrierungen.Go to the new Azure portal - App registrations pane.
  2. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Registrieren aus.Enter a name for your application and select Register.
  3. Befolgen Sie die Anweisungen, um Ihre neue Anwendung mit nur einem Klick herunterzuladen und automatisch zu konfigurieren.Follow the instructions to download and automatically configure your new application in a single click.

Option 2: Erweiterter ModusOption 2: Advanced mode

Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und Ihrer Projektmappe manuell die Registrierungsinformationen Ihrer App hinzuzufügen:To register your application and add the app's registration information to your solution manually, follow these steps:

  1. Öffnen Sie Visual Studio, und führen Sie die folgenden Schritte aus:Open Visual Studio, and then:

    1. Wählen Sie im Projektmappen-Explorer das Projekt aus, und zeigen Sie das Eigenschaftenfenster an. (Drücken Sie F4, wenn es nicht angezeigt wird.)in Solution Explorer, select the project and view the Properties window (if you don't see a Properties window, press F4).
    2. Ändern Sie „SSL aktiviert“ in True.Change SSL Enabled to True.
    3. Klicken Sie mit der rechten Maustaste in Visual Studio auf das Projekt, und wählen Sie Eigenschaften und dann die Registerkarte Web aus. Ändern Sie im Abschnitt Server die Einstellung Projekt-URL in die SSL-URL.Right-click the project in Visual Studio, select Properties, and then select the Web tab. In the Servers section, change the Project Url setting to the SSL URL.
    4. Kopieren Sie die SSL-URL.Copy the SSL URL. Sie fügen diese URL im nächsten Schritt der Liste mit den Umleitungs-URLs im Registrierungsportal hinzu.You'll add this URL to the list of Redirect URLs in the Registration portal's list of Redirect URLs in the next step.

      Projekteigenschaften
  2. Melden Sie sich mit einem Geschäfts-, Schul- oder Unikonto oder mit einem persönlichen Microsoft-Konto beim Azure-Portal an.Sign in to the Azure portal by using a work or school account, or by using a personal Microsoft account.

  3. Wenn Sie mit Ihrem Konto auf mehrere Mandanten zugreifen können, wählen Sie rechts oben Ihr Konto aus, und legen Sie Ihre Portalsitzung auf den gewünschten Azure AD-Mandanten fest.If your account gives you access to more than one tenant, select your account in the upper-right corner, and set your portal session to the Azure AD tenant that you want.

  4. Navigieren Sie auf der Microsoft Identity Platform für Entwickler zur Seite App-Registrierungen.Go to the Microsoft identity platform for developers App registrations page.

  5. Wählen Sie Neue Registrierung aus.Select New registration.

  6. Geben Sie auf der daraufhin angezeigten Seite Anwendung registrieren die Registrierungsinformationen für Ihre Anwendung ein:When the Register an application page appears, enter your application's registration information:

    1. Geben Sie im Abschnitt Name einen aussagekräftigen Anwendungsnamen ein, der den Benutzern der App angezeigt wird (beispielsweise ASPNET-Tutorial).In the Name section, enter a meaningful application name that will be displayed to users of the app, like ASPNET-Tutorial.
    2. Fügen Sie die SSL-URL, die Sie in Schritt 1 aus Visual Studio kopiert haben (z. B. https://localhost:44368/) unter Antwort-URL hinzu, und wählen Sie Registrieren aus.Add the SSL URL you copied from Visual Studio in step 1 (for example, https://localhost:44368/) in Reply URL, and select Register.
  7. Wählen Sie das Menü Authentifizierung und dann ID-Token unter Implizite Genehmigung aus. Wählen Sie dann Speichern aus.Select the Authentication menu, select ID tokens under Implicit Grant, and then select Save.

  8. Fügen Sie im Stammordner der Datei „web.config“ im Abschnitt configuration\appSettings Folgendes hinzu:Add the following in the web.config file, located in the root folder in the configuration\appSettings section:

    <add key="ClientId" value="Enter_the_Application_Id_here" />
    <add key="redirectUri" value="Enter_the_Redirect_URL_here" />
    <add key="Tenant" value="common" />
    <add key="Authority" value="https://login.microsoftonline.com/{0}/v2.0" />
    
  9. Ersetzen Sie ClientId durch die Anwendungs-ID, die Sie gerade registriert haben.Replace ClientId with the Application ID you just registered.

  10. Ersetzen Sie redirectUri durch die SSL-URL Ihres Projekts.Replace redirectUri with the SSL URL of your project.

Testen Ihres CodesTest your code

Um Ihre Anwendung in Visual Studio zu testen, drücken Sie F5, um das Projekt auszuführen.To test your application in Visual Studio, press F5 to run your project. Der Browser wird geöffnet und leitet Sie zu „http://localhost:{Port}“ weiter, wo die Schaltfläche Bei Microsoft anmelden angezeigt wird.The browser opens to the http://localhost:{port} location, and you see the Sign in with Microsoft button. Wählen Sie die Schaltfläche aus, um den Anmeldeprozess zu starten.Select the button to start the sign-in process.

Wenn Sie Ihren Test ausführen möchten, verwenden Sie für die Anmeldung ein Azure AD-Konto (Geschäfts-, Schul- oder Unikonto) oder ein persönliches Microsoft-Konto (live.com oder outlook.com).When you're ready to run your test, use an Azure AD account (work or school account) or a personal Microsoft account (live.com or outlook.com) to sign in.

Schaltfläche „Anmelden mit Microsoft“ auf der Anmeldeseite im Browser Sign in with Microsoft button shown on browser logon page in browser

Mit einem Microsoft-Konto anmeldenSign in to your Microsoft account

Anwendungen, die sich in die Microsoft Identity Platform integrieren lassen, folgen einem bestimmten Autorisierungsmodell, mit dem Benutzer und Administratoren den Zugriff auf Daten steuern können.Applications that integrate with Microsoft identity platform follow an authorization model that gives users and administrators control over how data can be accessed. Nachdem sich ein Benutzer mit Microsoft Identity Platform für den Zugriff auf diese Anwendung authentifiziert hat, wird er aufgefordert, seine Zustimmung für die von der Anwendung angeforderten Berechtigungen zu erteilen („Ihr grundlegendes Profil anzeigen“ und „Zugriff auf Daten beibehalten, für die Sie Zugriff erteilt haben“).After a user authenticates with Microsoft identity platform to access this application, they will be prompted to consent to the permissions requested by the application ("View your basic profile" and "Maintain access to data you have given it access to"). Wenn der Benutzer diese Berechtigungen akzeptiert hat, wird er zu den Anwendungsergebnissen weitergeleitet.After accepting these permissions, the user will continue on to the application results. In folgenden Fällen wird dem Benutzer jedoch unter Umständen stattdessen die Seite Need admin consent (Administratoreinwilligung erforderlich) angezeigt:However, the user may instead be prompted with a Need admin consent page if either of the following occur:

  • Der Anwendungsentwickler fügt zusätzliche Berechtigungen hinzu, für die die Administratoreinwilligung erforderlich ist.The application developer adds any additional permissions that require Admin consent.
  • Der Mandant wurde (unter Unternehmensanwendungen > Benutzereinstellungen) so konfiguriert, dass Benutzer Apps den Zugriff auf Unternehmensdaten in ihrem Namen nicht gestatten können.Or the tenant is configured (in Enterprise Applications -> User Settings) where users cannot consent to apps accessing company data on their behalf.

Weitere Informationen finden Sie unter Berechtigungen und Zustimmung im Microsoft Identity Platform-Endpunkt.For more information, refer to Permissions and consent in the Microsoft identity platform endpoint.

Anzeigen von AnwendungsergebnissenView application results

Nachdem Sie sich angemeldet haben, wird der Benutzer zur Startseite Ihrer Website umgeleitet.After you sign in, the user is redirected to the home page of your website. Die Startseite ist die HTTPS-URL, die im Microsoft-Anwendungsregistrierungsportal in Ihre Anwendungsregistrierungsinformationen eingegeben wurde.The home page is the HTTPS URL that's specified in your application registration info in the Microsoft Application Registration Portal. Auf der Startseite werden die Willkommensnachricht „Hallo <user>“ , ein Link zum Abmelden und ein Link zum Anzeigen der Benutzeransprüche angezeigt.The home page includes a "Hello <user>" welcome message, a link to sign out, and a link to view the user's claims. Über den Link für die Benutzeransprüche gelangen Sie zum zuvor erstellten Claims-Controller.The link for the user's claims connects to the Claims controller that you created earlier.

Anzeigen der Ansprüche des BenutzersView the user's claims

Um die Benutzeransprüche anzuzeigen, wählen Sie den Link zum Navigieren zur Controlleransicht aus. Diese ist nur für authentifizierte Benutzer verfügbar.To view the user's claims, select the link to browse to the controller view that's available only to authenticated users.

Anzeigen der AnspruchsergebnisseView the claims results

Nachdem Sie die Controlleransicht aufgerufen haben, sollten Sie eine Tabelle mit den grundlegenden Eigenschaften des Benutzers sehen:After you browse to the controller view, you should see a table that contains the basic properties for the user:

EigenschaftProperty WertValue BeschreibungDescription
NameName Vollständiger Name des BenutzersUser's full name Dies ist der Vorname und der Nachname des Benutzers.The user's first and last name
BenutzernameUsername Benutzer@domain.comuser@domain.com Der zur Identifizierung des Benutzers verwendete BenutzernameThe username that's used to identify the user
SubjectSubject SubjectSubject Eine Zeichenfolge, die den Benutzer im Internet eindeutig identifiziertA string that uniquely identifies the user across the web
Tenant IDTenant ID GuidGuid Dies ist eine GUID, die die Azure AD-Organisation des Benutzers eindeutig identifiziert.A guid that uniquely represents the user's Azure AD organization

Darüber hinaus sollten Sie eine Tabelle aller Ansprüche sehen, die in der Authentifizierungsanforderung enthalten sind.Additionally, you should see a table of all claims that are in the authentication request. Weitere Informationen finden Sie in der Liste der in einem ID-Token enthaltenen Ansprüche.For more information, see the list of claims that are in an ID token.

Testen des Zugriffs auf eine Methode mit einem Authorize-Attribut (optional)Test access to a method that has an Authorize attribute (optional)

Führen Sie die folgenden Schritte aus, um den Zugriff als anonymer Benutzer auf einen mit dem Authorize-Attribut geschützten Controller zu testen:To test access as an anonymous user to a controller that's protected by the Authorize attribute, follow these steps:

  1. Wählen Sie den Link zum Abmelden des Benutzers aus, und schließen Sie den Abmeldevorgang ab.Select the link to sign out the user, and complete the sign-out process.
  2. Geben Sie nun im Browser „http://localhost:{Port}/claims“ ein, um auf den mit dem Authorize-Attribut geschützten Controller zuzugreifen.In your browser, type http://localhost:{port}/claims to access your controller that's protected by the Authorize attribute.

Erwartete Ergebnisse nach dem Zugriff auf einen geschützten ControllerExpected results after access to a protected controller

Sie werden für die Verwendung der geschützten Controlleransicht zur Authentifizierung aufgefordert.You're prompted to authenticate to use the protected controller view.

Erweiterte OptionenAdvanced options

Schutz der gesamten WebsiteProtect your entire website

Zum Schutz der gesamten Website fügen Sie in der Datei Global.asax unter der Methode Application_Startdem Filter GlobalFilters das AuthorizeAttribute-Attribut hinzu:To protect your entire website, in the Global.asax file, add the AuthorizeAttribute attribute to the GlobalFilters filter in the Application_Start method:

GlobalFilters.Filters.Add(new AuthorizeAttribute());

Einschränken des Anmeldezugriffs auf Ihre AnwendungRestrict who can sign in to your application

Wenn Sie die Anwendung nach dieser Anleitung erstellen, akzeptiert Ihre Anwendung standardmäßig sowohl Anmeldungen von persönlichen Konten (z. B. outlook.com, live.com u. a.) als auch von Geschäfts-, Schul- und Unikonten von Unternehmen oder Organisationen, die in Microsoft Identity Platform integriert wurden.By default when you build the application created by this guide, your application will accept sign-ins of personal accounts (including outlook.com, live.com, and others) as well as work and school accounts from any company or organization that's integrated with Microsoft identity platform. Diese Option wird für SaaS-Anwendungen empfohlen.This is a recommended option for SaaS applications.

Um den Anmeldezugriff des Benutzers auf Ihre Anwendung einzuschränken, stehen mehrere Optionen zur Verfügung:To restrict user sign-in access for your application, multiple options are available.

Option 1: Beschränken der Benutzer auf die Active Directory-Instanz nur einer Organisation für die Anmeldung bei der Anwendung (Einzelmandant)Option 1: Restrict users from only one organization's Active Directory instance to sign in to your application (single-tenant)

Diese Option wird häufig für Branchenanwendungen verwendet: Wenn Ihre Anwendung Anmeldungen nur von Konten akzeptieren soll, die zu einer bestimmten Azure AD-Instanz gehören (einschließlich Gastkonten dieser Instanz), gehen Sie wie folgt vor:This option is frequently used for LOB applications: If you want your application to accept sign-ins only from accounts that belong to a specific Azure AD instance (including guest accounts of that instance), follow these steps:

  1. Ändern Sie in der Datei „web.config“ den Wert für den Parameter Tenant von Common in den Mandantennamen der Organisation, z. B. contoso.onmicrosoft.com.In the web.config file, change the value for the Tenant parameter from Common to the tenant name of the organization, such as contoso.onmicrosoft.com.
  2. Legen Sie in Ihrer OWIN-Startup-Klasse das Argument ValidateIssuer auf true fest.In your OWIN Startup class, set the ValidateIssuer argument to true.

Option 2: Einschränken des Zugriffs auf Benutzer in einer bestimmten Liste von OrganisationenOption 2: Restrict access to users in a specific list of organizations

Sie können den Anmeldezugriff auf die Benutzerkonten beschränken, die in einer Azure AD-Organisation in der Liste der zulässigen Organisationen enthalten sind:You can restrict sign-in access to only those user accounts that are in an Azure AD organization that's on the list of allowed organizations:

  1. Legen Sie in Ihrer OWIN-Startup-Klasse das Argument ValidateIssuer auf true fest.In your OWIN Startup class, set the ValidateIssuer argument to true.
  2. Legen Sie den Wert des Parameters ValidIssuers auf die Liste der zulässigen Organisationen fest.Set the value of the ValidIssuers parameter to the list of allowed organizations.

Option 3: Überprüfen von Ausstellern mithilfe einer benutzerdefinierten MethodeOption 3: Use a custom method to validate issuers

Sie können eine benutzerdefinierte Methode implementieren, um Aussteller mit dem IssuerValidator-Parameter zu überprüfen.You can implement a custom method to validate issuers by using the IssuerValidator parameter. Weitere Informationen zur Verwendung dieses Parameters finden Sie im Artikel zur TokenValidationParameters-Klasse.For more information about how to use this parameter, see TokenValidationParameters class.

Hilfe und SupportHelp and support

Wenn Sie Hilfe benötigen, ein Problem melden möchten oder sich über Ihre Supportoptionen informieren möchten, finden Sie weitere Informationen unter Hilfe und Support für Entwickler.If you need help, want to report an issue, or would like to learn about your support options, see Help and support for developers.

Nächste SchritteNext steps

Informieren Sie sich über das Aufrufen geschützter Web-APIs durch Web-Apps mit Microsoft Identity Platform:Learn about calling protected web APIs from web apps with the Microsoft identity platform: