Delen via


Externe verificatieservices met ASP.NET Web-API (C#)

Voor het ontwikkelen van nieuwe web-apps raden we minimale API's aan

We raden u aan de veiligste veilige verificatieoptie te gebruiken. Zie voor .NET-apps die zijn geïmplementeerd in Azure:

Azure Key Vault en .NET Aspire bieden de veiligste manier om geheimen op te slaan en op te halen. Azure Key Vault is een cloudservice waarmee versleutelingssleutels en geheimen, zoals certificaten, verbindingsreeksen en wachtwoorden, worden beschermd. Zie voor .NET Aspire Beveiligde communicatie tussen hosting en clientintegraties.

Vermijd de 'Resource Owner Password Credentials Grant', omdat dit het volgende doet:

  • Stelt het wachtwoord van de gebruiker beschikbaar voor de client.
  • Is een aanzienlijk beveiligingsrisico.
  • Mag alleen worden gebruikt wanneer andere verificatiestromen niet mogelijk zijn.

Wanneer de app wordt geïmplementeerd op een testserver, kan een omgevingsvariabele worden gebruikt om de verbindingsreeks in te stellen op een testdatabaseserver. Omgevingsvariabelen worden over het algemeen opgeslagen in niet-versleutelde tekst. Als de machine of het proces is aangetast, kunnen omgevingsvariabelen worden geopend door niet-vertrouwde partijen. We raden af om omgevingsvariabelen te gebruiken om een productieverbindingsreeks op te slaan, aangezien dit niet de veiligste benadering is.

Richtlijnen voor configuratiegegevens:

  • Sla nooit wachtwoorden of andere gevoelige gegevens op in configuratieprovidercode of in configuratiebestanden met tekst zonder opmaak.
  • Gebruik geen productiegeheimen in ontwikkel- of testomgevingen.
  • Geef geheimen buiten het project op, zodat ze niet per ongeluk kunnen worden doorgevoerd in een opslagplaats met broncode.

Visual Studio 2017 en ASP.NET 4.7.2 breiden de beveiligingsopties uit voor toepassingen (SPA) en web-API services voor integratie met externe verificatieservices, waaronder verschillende OAuth/OpenID- en sociale mediaverificatieservices: Microsoft-accounts, Twitter, Facebook en Google.

In deze walkthrough

Voorwaarden

Als u de voorbeelden in dit scenario wilt volgen, moet u het volgende hebben:

Externe verificatieservices gebruiken

De overvloed aan externe verificatieservices die momenteel beschikbaar zijn voor webontwikkelaars, helpen bij het verminderen van de ontwikkelingstijd bij het maken van nieuwe webtoepassingen. Webgebruikers hebben doorgaans verschillende bestaande accounts voor populaire webservices en websites voor sociale media, dus wanneer een webtoepassing de verificatieservices van een externe webservice of sociale media-website implementeert, bespaart het de ontwikkelingstijd die zou zijn besteed aan het maken van een verificatie-implementatie. Als u een externe verificatieservice gebruikt, hoeven eindgebruikers geen ander account te maken voor uw webtoepassing en hoeven ze ook geen andere gebruikersnaam en wachtwoord te onthouden.

In het verleden hebben ontwikkelaars twee keuzes gehad: hun eigen verificatie-implementatie maken of leren hoe u een externe verificatieservice integreert in hun toepassingen. Op het meest elementaire niveau illustreert het volgende diagram een eenvoudige aanvraagstroom voor een gebruikersagent (webbrowser) die informatie aanvraagt van een webtoepassing die is geconfigureerd voor het gebruik van een externe verificatieservice:

Afbeelding van een eenvoudige aanvraagstroom voor een gebruikersagent

In het voorgaande diagram doet de gebruikersagent (of webbrowser in dit voorbeeld) een aanvraag naar een webtoepassing, die de webbrowser omleidt naar een externe verificatieservice. De gebruikersagent verzendt zijn referenties naar de externe verificatieservice en als de gebruikersagent succesvol is geverifieerd, zal de externe verificatieservice de gebruikersagent naar de oorspronkelijke webtoepassing omleiden met een token, die de gebruikersagent naar de webtoepassing verzendt. De webtoepassing gebruikt het token om te controleren of de gebruikersagent is geverifieerd door de externe verificatieservice en de webtoepassing kan het token gebruiken om meer informatie over de gebruikersagent te verzamelen. Zodra de toepassing klaar is met het verwerken van de gegevens van de gebruikersagent, retourneert de webtoepassing het juiste antwoord op de gebruikersagent op basis van de autorisatie-instellingen.

In dit tweede voorbeeld onderhandelt de gebruikersagent met de webtoepassing en de externe autorisatieserver en voert de webtoepassing aanvullende communicatie uit met de externe autorisatieserver om aanvullende informatie over de gebruikersagent op te halen:

Afbeelding van een gebruikersagent die met de webtoepassing onderhandelen

Visual Studio 2017 en ASP.NET 4.7.2 maken integratie met externe verificatieservices eenvoudiger voor ontwikkelaars door ingebouwde integratie te bieden voor de volgende verificatieservices:

  • Facebook
  • Google
  • Microsoft-accounts (Windows Live ID-accounts)
  • Twitter

De voorbeelden in dit scenario laten zien hoe u elk van de ondersteunde externe verificatieservices configureert met behulp van de nieuwe ASP.NET Web Application-sjabloon die wordt geleverd met Visual Studio 2017.

Notitie

Indien nodig moet u mogelijk uw FQDN toevoegen aan de instellingen voor uw externe verificatieservice. Deze vereiste is gebaseerd op beveiligingsbeperkingen voor sommige externe verificatieservices waarvoor de FQDN in uw toepassingsinstellingen moet overeenkomen met de FQDN die door uw clients wordt gebruikt. (De stappen hiervoor variëren sterk voor elke externe verificatieservice. Raadpleeg de documentatie voor elke externe verificatieservice om te zien of dit vereist is en hoe u deze instellingen configureert.) Als u IIS Express moet configureren voor het gebruik van een FQDN voor het testen van deze omgeving, raadpleegt u de IIS Express configureren voor het gebruik van een Fully Qualified Domain Name sectie verderop in deze procedure.

Een voorbeeldwebtoepassing maken

De volgende stappen leiden u door het maken van een voorbeeldtoepassing met behulp van de ASP.NET webapplicatiesjabloon, en u gebruikt deze voorbeeldtoepassing later in deze walkthrough voor elk van de externe authenticatiediensten.

Start Visual Studio 2017 en selecteer Nieuw project op de startpagina. Of selecteer in het menu BestandNieuw en dan Project.

Wanneer het dialoogvenster Nieuw project wordt weergegeven, selecteert u Geïnstalleerd en vouwt u Visual C#uit. Selecteer Webonder Visual C#. Selecteer ASP.NET Web Application (.Net Framework)in de lijst met projectsjablonen. Voer een naam in voor uw project en klik op OK.

afbeelding van het dialoogvenster Nieuw project

Wanneer de Nieuwe ASP.NET Project- wordt weergegeven, selecteert u de sjabloon toepassing met één pagina en klikt u op Project-maken.

afbeelding van sjabloonselectie

Wacht tot visual Studio 2017 uw project maakt.

Wanneer Visual Studio 2017 klaar is met het maken van uw project, opent u het Startup.Auth.cs bestand dat zich in de map App_Start bevindt.

Wanneer u het project voor het eerst maakt, worden geen van de externe verificatieservices ingeschakeld in Startup.Auth.cs bestand; hieronder ziet u hoe uw code eruit kan zien, met de secties gemarkeerd waar u een externe verificatieservice en eventuele relevante instellingen zou inschakelen om Microsoft-accounts, Twitter, Facebook of Google-verificatie te gebruiken met uw ASP.NET toepassing:

using System;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.DataProtection;
using Microsoft.Owin.Security.Google;
using Microsoft.Owin.Security.OAuth;
using Owin;
using WebApplication1.Models;
using WebApplication1.Providers;

namespace WebApplication1
{
    public partial class Startup
    {
        // Enable the application to use OAuthAuthorization. You can then secure your Web APIs
        static Startup()
        {
            PublicClientId = "web";

            OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                AuthorizeEndpointPath = new PathString("/Account/Authorize"),
                Provider = new ApplicationOAuthProvider(PublicClientId),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
            };
        }

        public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }

        public static string PublicClientId { get; private set; }

        // For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864
        public void ConfigureAuth(IAppBuilder app)
        {
            // Configure the db context, user manager and signin manager to use a single instance per request
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

            // Enable the application to use a cookie to store information for the signed in user
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                Provider = new CookieAuthenticationProvider
                {
                    // Enables the application to validate the security stamp when the user logs in.
                    // This is a security feature which is used when you change a password or add an external login to your account.  
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(20),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });
            // Use a cookie to temporarily store information about a user logging in with a third party login provider
            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
            app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));

            // Enables the application to remember the second login verification factor such as phone or email.
            // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
            // This is similar to the RememberMe option when you log in.
            app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

            // Enable the application to use bearer tokens to authenticate users
            app.UseOAuthBearerTokens(OAuthOptions);

            // Uncomment the following lines to enable logging in with third party login providers
            //app.UseMicrosoftAccountAuthentication(
            //    clientId: "",
            //    clientSecret: "");

            //app.UseTwitterAuthentication(
            //    consumerKey: "",
            //    consumerSecret: "");

            //app.UseFacebookAuthentication(
            //    appId: "",
            //    appSecret: "");

            //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            //{
            //    ClientId = "",
            //    ClientSecret = ""
            //});
        }
    }
}

Wanneer u op F5 drukt om uw webtoepassing te bouwen en fouten op te sporen, wordt er een aanmeldingsscherm weergegeven waarin u ziet dat er geen externe verificatieservices zijn gedefinieerd.

afbeelding van het aanmeldingsscherm

In de volgende secties leert u hoe u elk van de externe verificatieservices inschakelt die worden geleverd met ASP.NET in Visual Studio 2017.

Facebook-verificatie inschakelen

Als u Facebook-verificatie gebruikt, moet u een Facebook-ontwikkelaarsaccount maken. Voor uw project is een toepassings-id en geheime sleutel van Facebook vereist om te kunnen functioneren. Zie https://go.microsoft.com/fwlink/?LinkID=252166voor informatie over het maken van een Facebook-ontwikkelaarsaccount en het verkrijgen van uw toepassings-id en geheime sleutel.

Zodra u uw toepassings-id en geheime sleutel hebt verkregen, gebruikt u de volgende stappen om Facebook-verificatie in te schakelen voor uw webtoepassing:

  1. Wanneer uw project is geopend in Visual Studio 2017, opent u het Startup.Auth.cs-bestand.

  2. Zoek de sectie Facebook-verificatie van de code:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //    consumerKey: "",
    //    consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //    appId: "",
    //    appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Verwijder de //-tekens om de opmerkingen bij de gemarkeerde coderegels te verwijderen en voeg vervolgens uw toepassings-id en geheime sleutel toe. Nadat u deze parameters hebt toegevoegd, kunt u het project opnieuw compileren:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "426f62526f636b73",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication();
    
  4. Wanneer u op F5 drukt om uw webtoepassing in uw webbrowser te openen, ziet u dat Facebook is gedefinieerd als een externe verificatieservice:

    Afbeelding van Facebook gedefinieerd

  5. Wanneer u op de knop Facebook klikt, wordt uw browser omgeleid naar de Facebook-aanmeldingspagina:

    Afbeelding van facebookaanmeldingspagina

  6. Nadat u uw Facebook-referenties hebt ingevoerd en op Log inhebt geklikt, wordt uw webbrowser teruggeleid naar uw webtoepassing. Hier wordt u gevraagd om de gebruikersnaam die u wilt koppelen aan uw Facebook-account:

    afbeelding van webtoepassing

  7. Nadat u uw gebruikersnaam hebt ingevoerd en op de knop Registreren hebt geklikt, wordt in uw webtoepassing de standaardpagina startpagina weergegeven voor uw Facebook-account:

    Afbeelding met de standaard startpagina van Facebook

Google-verificatie inschakelen

Als u Google-verificatie gebruikt, moet u een Google-ontwikkelaarsaccount maken. Voor uw project is een toepassings-id en geheime sleutel van Google vereist om te kunnen functioneren. Zie https://developers.google.comvoor informatie over het maken van een Google-ontwikkelaarsaccount en het verkrijgen van uw toepassings-id en geheime sleutel.

Gebruik de volgende stappen om Google-verificatie in te schakelen voor uw webtoepassing:

  1. Wanneer uw project is geopend in Visual Studio 2017, opent u het Startup.Auth.cs-bestand.

  2. Zoek de sectie Google-verificatie van de code:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //    consumerKey: "",
    //    consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //    appId: "",
    //    appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Verwijder de //-tekens om de opmerkingen bij de gemarkeerde coderegels te verwijderen en voeg vervolgens uw toepassings-id en geheime sleutel toe. Nadat u deze parameters hebt toegevoegd, kunt u het project opnieuw compileren:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    {
        ClientId = "477522346600.apps.googleusercontent.com",
        ClientSecret = "gobkdpbocikdfbnfahjladnetpdkvmic"
    });
    
  4. Wanneer u op F5 drukt om uw webtoepassing in uw webbrowser te openen, ziet u dat Google is gedefinieerd als een externe verificatieservice:

    Afbeelding Google is gedefinieerd

  5. Wanneer u op de knop Google klikt, wordt uw browser omgeleid naar de aanmeldingspagina van Google:

    Afbeelding van de aanmeldingspagina van Google uit te vouwen

  6. Nadat u uw Google-referenties hebt ingevoerd en op Aanmeldenklikt, wordt u gevraagd om te controleren of uw webtoepassing machtigingen heeft voor toegang tot uw Google-account:

    Afbeelding van Google-machtigingen

  7. Wanneer u op Accepterenklikt, wordt uw webbrowser teruggeleid naar uw webtoepassing. Hier wordt u gevraagd om de gebruikersnaam die u wilt koppelen aan uw Google-account:

    afbeelding van de webtoepassingsprompt om de gebruikersnaam te koppelen

  8. Nadat u uw gebruikersnaam hebt ingevoerd en op de knop Registreren hebt geklikt, wordt in uw webtoepassing de standaardpagina startpagina weergegeven voor uw Google-account:

    afbeelding van de standaard startpagina van Google

Microsoft-verificatie inschakelen

Voor Microsoft-verificatie moet u een ontwikkelaarsaccount maken en hiervoor is een client-id en clientgeheim vereist om te kunnen functioneren. Zie https://go.microsoft.com/fwlink/?LinkID=144070voor informatie over het maken van een Microsoft-ontwikkelaarsaccount en het verkrijgen van uw client-id en clientgeheim.

Zodra u uw consumentensleutel en consumentengeheim hebt verkregen, gebruikt u de volgende stappen om Microsoft-verificatie in te schakelen voor uw webtoepassing:

  1. Wanneer uw project is geopend in Visual Studio 2017, opent u het Startup.Auth.cs-bestand.

  2. Zoek de Microsoft-authenticatiesectie van de code:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Verwijder de tekens '//' om de opmerkingen bij de gemarkeerde coderegels te verwijderen en voeg vervolgens uw client-id en clientgeheim toe. Nadat u deze parameters hebt toegevoegd, kunt u het project opnieuw compileren:

    // Uncomment the following lines to enable logging in with third party login providers
    app.UseMicrosoftAccountAuthentication(
        clientId: "426f62526f636b73",
        clientSecret: "57686f6120447564652c2049495320526f636b73");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  4. Wanneer u op F5 drukt om uw webtoepassing in uw webbrowser te openen, ziet u dat Microsoft is gedefinieerd als een externe verificatieservice:

    door Microsoft gedefinieerde afbeelding

  5. Wanneer u op de knop Microsoft klikt, wordt uw browser omgeleid naar de aanmeldingspagina van Microsoft:

    afbeelding van de microsoft-aanmeldingspagina

  6. Nadat u uw Microsoft-referenties hebt ingevoerd en op Aanmeldenklikt, wordt u gevraagd om te controleren of uw webtoepassing machtigingen heeft voor toegang tot uw Microsoft-account:

    afbeelding van Microsoft-machtigingen

  7. Wanneer u op Jaklikt, wordt uw webbrowser teruggeleid naar uw webtoepassing. Hier wordt u gevraagd om de gebruikersnaam die u aan uw Microsoft-account wilt koppelen:

    Afbeelding van Google-account om

  8. Nadat u uw gebruikersnaam hebt ingevoerd en op de knop Registreren hebt geklikt, wordt in uw webtoepassing de standaardpagina startpagina weergegeven voor uw Microsoft-account:

    standaardafbeelding van de Microsoft-startpagina

Twitter-verificatie inschakelen

Voor Twitter-verificatie moet u een ontwikkelaarsaccount maken en hiervoor is een consumentensleutel en consumentengeheim vereist om te kunnen functioneren. Zie https://go.microsoft.com/fwlink/?LinkID=252166voor informatie over het maken van een Twitter-ontwikkelaarsaccount en het verkrijgen van uw consumentensleutel en consumentengeheim.

Zodra u uw consumentensleutel en consumentengeheim hebt verkregen, gebruikt u de volgende stappen om Twitter-verificatie in te schakelen voor uw webtoepassing:

  1. Wanneer uw project is geopend in Visual Studio 2017, opent u het Startup.Auth.cs-bestand.

  2. Zoek de twitter-verificatiesectie van de code:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Verwijder de tekens '//' om de opmerkingen bij de gemarkeerde coderegels te verwijderen en voeg vervolgens uw consumentensleutel en consumentengeheim toe. Nadat u deze parameters hebt toegevoegd, kunt u het project opnieuw compileren:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    app.UseTwitterAuthentication(
       consumerKey: "426f62526f636b73",
       consumerSecret: "57686f6120447564652c2049495320526f636b73");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  4. Wanneer u op F5 drukt om uw webtoepassing in uw webbrowser te openen, ziet u dat Twitter is gedefinieerd als een externe verificatieservice:

    Afbeelding van Twitter gedefinieerd

  5. Wanneer u op de knop Twitter klikt, wordt uw browser omgeleid naar de aanmeldingspagina van Twitter:

    Afbeelding van de Aanmeldingspagina van Twitter

  6. Nadat u uw Twitter-referenties hebt ingevoerd en op App autoriserenhebt geklikt, wordt uw webbrowser teruggeleid naar uw webtoepassing. Hier wordt u gevraagd om de gebruikersnaam die u wilt koppelen aan uw Twitter-account:

    Afbeelding van het Twitter-account dat u wilt koppelen in de web-app

  7. Nadat u uw gebruikersnaam hebt ingevoerd en op de knop Registreren hebt geklikt, wordt in uw webtoepassing de standaardpagina startpagina weergegeven voor uw Twitter-account:

    standaardafbeelding van de Twitter-startpagina

Aanvullende informatie

Zie de volgende URL's voor meer informatie over het maken van toepassingen die gebruikmaken van OAuth en OpenID:

Externe verificatieservices combineren

Voor meer flexibiliteit kunt u meerdere externe verificatieservices tegelijk definiëren. Hierdoor kunnen de gebruikers van uw webtoepassing een account van een van de ingeschakelde externe verificatieservices gebruiken:

afbeelding van meerdere externe authenticatiediensten

IIS Express configureren voor het gebruik van een volledig gekwalificeerde domeinnaam

Sommige externe verificatieproviders ondersteunen het testen van uw toepassing niet met behulp van een HTTP-adres zoals http://localhost:port/. U kunt dit probleem omzeilen door een statische FQDN-toewijzing (Fully Qualified Domain Name) toe te voegen aan uw HOSTS-bestand en de projectopties in Visual Studio 2017 te configureren om de FQDN te gebruiken voor testen/foutopsporing. Gebruik hiervoor de volgende stappen:

  • Voeg een statische FQDN-toewijzing toe aan uw HOSTS-bestand:

    1. Open een opdrachtprompt met verhoogde bevoegdheid in Windows.

    2. Typ de volgende opdracht:

      kladblok %WinDir%\system32\drivers\etc\hosts

    3. Voeg een vermelding als de volgende toe aan het HOSTS-bestand:

      127.0.0.1 www.wingtiptoys.com

    4. Sla het HOSTS-bestand op en sluit het.

  • Configureer uw Visual Studio-project om de FQDN te gebruiken:

    1. Wanneer uw project is geopend in Visual Studio 2017, klikt u op het menu Project en selecteert u de eigenschappen van uw project. U kunt bijvoorbeeld WebApplication1 Eigenschappenselecteren.
    2. Selecteer het tabblad Web.
    3. Voer uw FQDN in voor de Project-URL. U voert bijvoorbeeld http://www.wingtiptoys.com in als dat de FQDN-toewijzing was die u hebt toegevoegd aan uw HOSTS-bestand.
  • Configureer IIS Express voor het gebruik van de FQDN voor uw toepassing:

    1. Open een opdrachtprompt met verhoogde bevoegdheid in Windows.

    2. Typ het volgende commando om naar uw IIS Express-map te gaan:

      cd /d "%ProgramFiles%\IIS Express"

    3. Typ de volgende opdracht om de FQDN toe te voegen aan uw toepassing:

      appcmd.exe configuratie instellen -section:system.applicationHost/sites /+"[name='WebApplication1'].bindingen.[protocol='http',bindingInformation='*:80:www.wingtiptoys.com']" /commit:apphost

    Waar WebApplication1 de naam van uw project is en bindingInformation- het poortnummer en de FQDN bevat die u wilt gebruiken voor uw test.

Uw toepassingsinstellingen voor Microsoft-verificatie verkrijgen

Het koppelen van een toepassing aan Windows Live voor Microsoft-verificatie is een eenvoudig proces. Als u nog geen toepassing aan Windows Live hebt gekoppeld, kunt u de volgende stappen uitvoeren:

  1. Blader naar https://go.microsoft.com/fwlink/?LinkID=144070 en voer de naam en het wachtwoord van uw Microsoft-account in wanneer u hierom wordt gevraagd. Klik vervolgens op Aanmelden:

  2. Selecteer Een app- toevoegen en voer de naam van uw toepassing in wanneer u hierom wordt gevraagd en klik vervolgens op maken:

    afbeelding om een app toe te voegen

  3. Selecteer uw app onder Naam en de bijbehorende pagina met toepassingseigenschappen wordt weergegeven.

  4. Voer het omleidingsdomein voor uw toepassing in. Kopieer de toepassings-id en selecteer onder ToepassingsgeheimenWachtwoord genereren. Kopieer het wachtwoord dat wordt weergegeven. De toepassings-id en het wachtwoord zijn uw client-id en clientgeheim. Selecteer OK- en opslaan.

    afbeelding van domeininformatie voor omleiding

Optioneel: Lokale registratie uitschakelen

De huidige ASP.NET lokale registratiefunctionaliteit voorkomt niet dat geautomatiseerde programma's (bots) lidaccounts maken; Bijvoorbeeld door een botpreventie- en validatietechnologie zoals CAPTCHA-te gebruiken. Daarom moet u het lokale aanmeldingsformulier en de registratiekoppeling op de aanmeldingspagina verwijderen. Hiervoor opent u de pagina _Login.cshtml in uw project en markeert u de regels voor het lokale aanmeldingsvenster en de registratiekoppeling. De resulterende pagina moet eruitzien als het volgende codevoorbeeld:

<!-- ko with: login -->
<hgroup class="title">
    <h1>Log in</h1>
</hgroup>
<div class="row-fluid">
    @*<section class="span7">
        <form>
            <fieldset class="form-horizontal">
                <legend>Use a local account to log in.</legend>
                <ul class="text-error" data-bind="foreach: errors">
                    <li data-bind="text: $data"></li>
                </ul>
                <div class="control-group">
                    <label for="UserName" class="control-label">User name</label>
                    <div class="controls">
                        <input type="text" name="UserName" data-bind="value: userName, hasFocus: true" />
                        <span class="text-error" data-bind="visible: userName.hasError, text: userName.errorMessage"></span>
                    </div>
                </div>
                <div class="control-group">
                    <label for="Password" class="control-label">Password</label>
                    <div class="controls">
                        <input type="password" name="Password" data-bind="value: password" />
                        <span class="text-error" data-bind="visible: password.hasError, text: password.errorMessage"></span>
                    </div>
                </div>
                <div class="control-group">
                    <div class="controls">
                        <label class="checkbox">
                            <input type="checkbox" name="RememberMe" data-bind="checked: rememberMe" />
                            <label for="RememberMe">Remember me?</label>
                        </label>
                    </div>
                </div>
                <div class="form-actions no-color">
                    <button type="submit" class="btn" data-bind="click: login, disable: loggingIn">Log in</button>
                </div>
                <p><a href="#" data-bind="click: register">Register</a> if you don't have a local account.</p>
            </fieldset>
        </form>
    </section>*@
    <section class="span5">
        <h2>Log in using another service</h2>
        <div data-bind="visible: loadingExternalLogin">Loading...</div>
        <div data-bind="visible: !loadingExternalLogin()">
            <div class="message-info" data-bind="visible: !hasExternalLogin()">
                <p>
                    There are no external authentication services configured. See <a href="https://go.microsoft.com/fwlink/?LinkId=252166">this article</a>
                    for details on setting up this ASP.NET application to support logging in via external services.
                </p>
            </div>
            <form data-bind="visible: hasExternalLogin">
                <fieldset class="form-horizontal">
                    <legend>Use another service to log in.</legend>
                    <p data-bind="foreach: externalLoginProviders">
                        <button type="submit" class="btn" data-bind="text: name, attr: { title: 'Log in using your ' + name() + ' account' }, click: login"></button>
                    </p>
                </fieldset>
            </form>
        </div>
    </section>
</div>
<!-- /ko -->

Zodra het lokale aanmeldingsvenster en de registratiekoppeling zijn uitgeschakeld, worden op uw aanmeldingspagina alleen de externe verificatieproviders weergegeven die u hebt ingeschakeld:

Afbeelding van alleen inloggen externe providers