Udostępnij za pośrednictwem


Zewnętrzne usługi uwierzytelniania z interfejsem API sieci Web ASP.NET (C#)

Programy Visual Studio 2017 i ASP.NET 4.7.2 rozszerzają opcje zabezpieczeń dla usług Jednostronicowych aplikacji (SPA) i internetowych interfejsów API w celu integracji z zewnętrznymi usługami uwierzytelniania, które obejmują kilka usług uwierzytelniania OAuth/OpenID i social media: Konta Microsoft, Twitter, Facebook i Google.

W tym przewodniku

Wymagania wstępne

Aby postępować zgodnie z przykładami w tym przewodniku, musisz mieć następujące elementy:

Korzystanie z usług uwierzytelniania zewnętrznego

Mnóstwo zewnętrznych usług uwierzytelniania, które są obecnie dostępne dla deweloperów internetowych, pomaga skrócić czas programowania podczas tworzenia nowych aplikacji internetowych. Użytkownicy sieci Web zwykle mają kilka istniejących kont dla popularnych usług internetowych i witryn społecznościowych, dlatego gdy aplikacja internetowa implementuje usługi uwierzytelniania z zewnętrznej usługi internetowej lub witryny internetowej mediów społecznościowych, oszczędza czas programowania, który zostałby poświęcony na utworzenie implementacji uwierzytelniania. Korzystanie z zewnętrznej usługi uwierzytelniania pozwala użytkownikom końcowym na utworzenie innego konta dla aplikacji internetowej, a także od konieczności zapamiętowania innej nazwy użytkownika i hasła.

W przeszłości deweloperzy mieli dwie możliwości: utworzyć własną implementację uwierzytelniania lub dowiedzieć się, jak zintegrować zewnętrzną usługę uwierzytelniania z aplikacjami. Na najbardziej podstawowym poziomie na poniższym diagramie przedstawiono prosty przepływ żądań dla agenta użytkownika (przeglądarki internetowej), który żąda informacji z aplikacji internetowej skonfigurowanej do korzystania z zewnętrznej usługi uwierzytelniania:

Ilustracja przedstawiająca prosty przepływ żądania dla agenta użytkownika

Na powyższym diagramie agent użytkownika (lub przeglądarka internetowa w tym przykładzie) wysyła żądanie do aplikacji internetowej, która przekierowuje przeglądarkę internetową do zewnętrznej usługi uwierzytelniania. Agent użytkownika wysyła swoje poświadczenia do zewnętrznej usługi uwierzytelniania, a jeśli agent użytkownika został pomyślnie uwierzytelniony, zewnętrzna usługa uwierzytelniania przekieruje agenta użytkownika do oryginalnej aplikacji internetowej z pewną formą tokenu, który agent użytkownika wyśle do aplikacji internetowej. Aplikacja internetowa użyje tokenu, aby sprawdzić, czy agent użytkownika został pomyślnie uwierzytelniony przez zewnętrzną usługę uwierzytelniania, a aplikacja internetowa może użyć tokenu, aby zebrać więcej informacji o agencie użytkownika. Po zakończeniu przetwarzania informacji agenta użytkownika aplikacja internetowa zwróci odpowiednią odpowiedź agentowi użytkownika na podstawie ustawień autoryzacji.

W tym drugim przykładzie agent użytkownika negocjuje z aplikacją internetową i zewnętrznym serwerem autoryzacji, a aplikacja internetowa wykonuje dodatkową komunikację z zewnętrznym serwerem autoryzacji w celu pobrania dodatkowych informacji o agencie użytkownika:

Ilustracja przedstawiająca negocjowanie agenta użytkownika z aplikacją internetową

Programy Visual Studio 2017 i ASP.NET 4.7.2 ułatwiają integrację z zewnętrznymi usługami uwierzytelniania dla deweloperów, zapewniając wbudowaną integrację dla następujących usług uwierzytelniania:

  • Facebook
  • Google
  • Konta Microsoft (konta windows Live ID)
  • Twitter

W przykładach w tym przewodniku pokazano, jak skonfigurować każdą z obsługiwanych usług uwierzytelniania zewnętrznego przy użyciu nowego szablonu aplikacji internetowej ASP.NET dostarczanego z programem Visual Studio 2017.

Uwaga

W razie potrzeby może być konieczne dodanie nazwy FQDN do ustawień usługi uwierzytelniania zewnętrznego. To wymaganie jest oparte na ograniczeniach zabezpieczeń dla niektórych usług uwierzytelniania zewnętrznych, które wymagają nazwy FQDN w ustawieniach aplikacji, aby były zgodne z nazwą FQDN używaną przez klientów. (Kroki tego rozwiązania będą się znacznie różnić w przypadku każdej zewnętrznej usługi uwierzytelniania. Należy zapoznać się z dokumentacją każdej usługi uwierzytelniania zewnętrznego, aby sprawdzić, czy jest to wymagane i jak skonfigurować te ustawienia). Jeśli musisz skonfigurować IIS Express do używania nazwy FQDN do testowania tego środowiska, zobacz sekcję Konfigurowanie IIS Express do korzystania z w pełni kwalifikowanej nazwy domeny w dalszej części tego przewodnika.

Tworzenie przykładowej aplikacji internetowej

Poniższe kroki przeprowadzą Cię przez proces tworzenia przykładowej aplikacji przy użyciu szablonu aplikacji internetowej ASP.NET. Ta przykładowa aplikacja będzie używana dla każdej z zewnętrznych usług uwierzytelniania w dalszej części tego przewodnika.

Uruchom program Visual Studio 2017 i wybierz pozycję Nowy projekt na stronie Start. Ewentualnie w menu Plik wybierz pozycję Nowy , a następnie pozycję Projekt.

Po wyświetleniu okna dialogowego Nowy projekt wybierz pozycję Zainstalowane i rozwiń węzeł Visual C#. W obszarze Visual C# wybierz pozycję Sieć Web. Na liście szablonów projektów wybierz pozycję ASP.NET Aplikacja internetowa (.Net Framework). Wprowadź nazwę projektu i kliknij przycisk OK.

Obraz okna dialogowego Nowy projekt

Po wyświetleniu pozycji Nowy projekt ASP.NET wybierz szablon Aplikacja jednostronicowa i kliknij pozycję Utwórz projekt.

Obraz wyboru szablonu

Poczekaj, aż program Visual Studio 2017 utworzy projekt.

Po zakończeniu tworzenia projektu programu Visual Studio 2017 otwórz plik Startup.Auth.cs znajdujący się w folderze App_Start .

Po pierwszym utworzeniu projektu żadna z zewnętrznych usług uwierzytelniania nie jest włączona w pliku Startup.Auth.cs ; Poniżej przedstawiono, jak może wyglądać kod, z wyróżnionymi sekcjami dotyczącymi włączania zewnętrznej usługi uwierzytelniania i wszelkich odpowiednich ustawień w celu korzystania z kont Microsoft, Twitter, Facebook lub Google uwierzytelniania za pomocą aplikacji ASP.NET:

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 = ""
            //});
        }
    }
}

Po naciśnięciu klawisza F5 w celu skompilowania i debugowania aplikacji internetowej zostanie wyświetlony ekran logowania, na którym zobaczysz, że nie zdefiniowano żadnych zewnętrznych usług uwierzytelniania.

Obraz przedstawiający ekran logowania

W poniższych sekcjach dowiesz się, jak włączyć każdą z zewnętrznych usług uwierzytelniania dostarczanych z ASP.NET w programie Visual Studio 2017.

Włączanie uwierzytelniania w usłudze Facebook

Korzystanie z uwierzytelniania w serwisie Facebook wymaga utworzenia konta dewelopera serwisu Facebook, a projekt będzie wymagał identyfikatora aplikacji i klucza tajnego z serwisu Facebook, aby móc działać. Aby uzyskać informacje na temat tworzenia konta dewelopera w serwisie Facebook i uzyskiwania identyfikatora aplikacji i klucza tajnego, zobacz https://go.microsoft.com/fwlink/?LinkID=252166.

Po uzyskaniu identyfikatora aplikacji i klucza tajnego wykonaj następujące kroki, aby włączyć uwierzytelnianie w usłudze Facebook dla aplikacji internetowej:

  1. Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs .

  2. Znajdź sekcję uwierzytelniania serwisu Facebook w kodzie:

    // 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. Usuń znaki "//", aby usunąć komentarz z wyróżnionych wierszy kodu, a następnie dodaj identyfikator aplikacji i klucz tajny. Po dodaniu tych parametrów możesz ponownie skompilować projekt:

    // 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. Po naciśnięciu klawisza F5 w celu otwarcia aplikacji internetowej w przeglądarce internetowej zobaczysz, że facebook został zdefiniowany jako zewnętrzna usługa uwierzytelniania:

    Obraz przedstawiający zdefiniowany przez serwis Facebook

  5. Po kliknięciu przycisku Facebook przeglądarka zostanie przekierowana do strony logowania do serwisu Facebook:

    Obraz przedstawiający stronę logowania do serwisu Facebook

  6. Po wprowadzeniu poświadczeń serwisu Facebook i kliknięciu przycisku Zaloguj przeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, co spowoduje wyświetlenie monitu o podanie nazwy użytkownika , którą chcesz skojarzyć z kontem w serwisie Facebook:

    Obraz przedstawiający kliknięcie aplikacji internetowej

  7. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną twojego konta w serwisie Facebook:

    Obraz przedstawiający domyślną stronę główną serwisu Facebook

Włączanie uwierzytelniania Google

Korzystanie z uwierzytelniania Google wymaga utworzenia konta dewelopera Google, a projekt będzie wymagał identyfikatora aplikacji i klucza tajnego z firmy Google, aby móc działać. Aby uzyskać informacje na temat tworzenia konta dewelopera Google i uzyskiwania identyfikatora aplikacji i klucza tajnego, zobacz https://developers.google.com.

Aby włączyć uwierzytelnianie Google dla aplikacji internetowej, wykonaj następujące kroki:

  1. Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs .

  2. Znajdź sekcję uwierzytelniania Google w kodzie:

    // 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. Usuń znaki "//", aby usunąć komentarz z wyróżnionych wierszy kodu, a następnie dodaj identyfikator aplikacji i klucz tajny. Po dodaniu tych parametrów możesz ponownie skompilować projekt:

    // 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. Po naciśnięciu klawisza F5 w celu otwarcia aplikacji internetowej w przeglądarce internetowej zobaczysz, że firma Google została zdefiniowana jako zewnętrzna usługa uwierzytelniania:

    Obraz Google został zdefiniowany

  5. Po kliknięciu przycisku Google przeglądarka zostanie przekierowana do strony logowania Google:

    Obraz strony logowania Google

  6. Po wprowadzeniu poświadczeń Google i kliknięciu przycisku Zaloguj się firma Google wyświetli monit o sprawdzenie, czy aplikacja internetowa ma uprawnienia dostępu do konta Google:

    Obraz przedstawiający uprawnienia Google

  7. Po kliknięciu przycisku Akceptuj przeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, co spowoduje wyświetlenie monitu o podanie nazwy użytkownika , którą chcesz skojarzyć z kontem Google:

    Obraz przedstawiający monit aplikacji internetowej o podanie nazwy użytkownika do skojarzenia

  8. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną twojego konta Google:

    Obraz domyślnej strony głównej Google

Włączanie uwierzytelniania firmy Microsoft

Uwierzytelnianie firmy Microsoft wymaga utworzenia konta dewelopera i wymaga identyfikatora klienta i klucza tajnego klienta w celu działania. Aby uzyskać informacje na temat tworzenia konta dewelopera Microsoft i uzyskiwania identyfikatora klienta i klucza tajnego klienta, zobacz https://go.microsoft.com/fwlink/?LinkID=144070.

Po uzyskaniu klucza użytkownika i klucza tajnego klienta wykonaj następujące kroki, aby włączyć uwierzytelnianie firmy Microsoft dla aplikacji internetowej:

  1. Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs .

  2. Znajdź sekcję uwierzytelniania firmy Microsoft w kodzie:

    // 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. Usuń znaki "//", aby usunąć komentarz z wyróżnionych wierszy kodu, a następnie dodaj identyfikator klienta i klucz tajny klienta. Po dodaniu tych parametrów możesz ponownie skompilować projekt:

    // 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. Po naciśnięciu klawisza F5 w celu otwarcia aplikacji internetowej w przeglądarce internetowej zobaczysz, że firma Microsoft została zdefiniowana jako zewnętrzna usługa uwierzytelniania:

    Obraz przedstawiający kliknięcie zdefiniowane przez firmę Microsoft

  5. Po kliknięciu przycisku Microsoft przeglądarka zostanie przekierowana do strony logowania firmy Microsoft:

    Obraz strony logowania firmy Microsoft

  6. Po wprowadzeniu poświadczeń firmy Microsoft i kliknięciu przycisku Zaloguj zostanie wyświetlony monit o sprawdzenie, czy aplikacja internetowa ma uprawnienia dostępu do konta Microsoft:

    Obraz przedstawiający uprawnienia firmy Microsoft

  7. Po kliknięciu przycisku Tak przeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, co spowoduje wyświetlenie monitu o podanie nazwy użytkownika , którą chcesz skojarzyć z kontem Microsoft:

    Obraz przedstawiający konto Google, które ma skojarzyć

  8. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną konta Microsoft:

    Obraz domyślnej strony głównej firmy Microsoft

Włączanie uwierzytelniania w usłudze Twitter

Uwierzytelnianie w usłudze Twitter wymaga utworzenia konta dewelopera i wymaga klucza klienta i klucza tajnego klienta w celu działania. Aby uzyskać informacje na temat tworzenia konta dewelopera usługi Twitter i uzyskiwania klucza klienta i klucza tajnego użytkownika, zobacz https://go.microsoft.com/fwlink/?LinkID=252166.

Po uzyskaniu klucza konsumenta i klucza tajnego klienta wykonaj następujące kroki, aby włączyć uwierzytelnianie w usłudze Twitter dla aplikacji internetowej:

  1. Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs .

  2. Znajdź sekcję uwierzytelniania w usłudze Twitter w kodzie:

    // 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. Usuń znaki "//", aby usunąć komentarz z wyróżnionych wierszy kodu, a następnie dodaj klucz klienta i klucz tajny użytkownika. Po dodaniu tych parametrów możesz ponownie skompilować projekt:

    // 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. Po naciśnięciu klawisza F5 w celu otwarcia aplikacji internetowej w przeglądarce internetowej zobaczysz, że usługa Twitter została zdefiniowana jako zewnętrzna usługa uwierzytelniania:

    Obraz przedstawiający zdefiniowane przez usługę Twitter

  5. Po kliknięciu przycisku Twitter przeglądarka zostanie przekierowana do strony logowania do usługi Twitter:

    Obraz przedstawiający stronę logowania do usługi Twitter

  6. Po wprowadzeniu poświadczeń usługi Twitter i kliknięciu pozycji Autoryzuj aplikację przeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, co spowoduje wyświetlenie monitu o podanie nazwy użytkownika , którą chcesz skojarzyć z kontem w serwisie Twitter:

    Obraz przedstawiający konto w usłudze Twitter do skojarzenia z aplikacją internetową

  7. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną konta w serwisie Twitter:

    Obraz domyślnej strony głównej usługi Twitter

Dodatkowe informacje

Aby uzyskać dodatkowe informacje na temat tworzenia aplikacji korzystających z protokołu OAuth i OpenID, zobacz następujące adresy URL:

Łączenie usług uwierzytelniania zewnętrznego

Aby uzyskać większą elastyczność, można jednocześnie zdefiniować wiele zewnętrznych usług uwierzytelniania — dzięki temu użytkownicy aplikacji internetowej mogą korzystać z konta z dowolnej z usług uwierzytelniania zewnętrznego z włączonymi usługami uwierzytelniania zewnętrznego:

Obraz przedstawiający wiele usług uwierzytelniania zewnętrznego

Konfigurowanie IIS Express do używania w pełni kwalifikowanej nazwy domeny

Niektórzy zewnętrzni dostawcy uwierzytelniania nie obsługują testowania aplikacji przy użyciu adresu HTTP, takiego jak http://localhost:port/. Aby obejść ten problem, można dodać statyczne mapowanie w pełni kwalifikowanej nazwy domeny (FQDN) do pliku HOSTS i skonfigurować opcje projektu w programie Visual Studio 2017 do używania nazwy FQDN do testowania/debugowania. Aby to zrobić, wykonaj następujące kroki:

  • Dodaj statyczną nazwę FQDN mapowania pliku HOSTS:

    1. Otwórz wiersz polecenia z podwyższonym poziomem uprawnień w systemie Windows.

    2. Wpisz następujące polecenie:

      Notatnik %WinDir%\system32\drivers\etc\hosts

    3. Dodaj wpis podobny do następującego do pliku HOSTS:

      127.0.0.1 www.wingtiptoys.com

    4. Zapisz i zamknij plik HOSTS.

  • Skonfiguruj projekt programu Visual Studio do używania nazwy FQDN:

    1. Po otwarciu projektu w programie Visual Studio 2017 kliknij menu Projekt , a następnie wybierz właściwości projektu. Możesz na przykład wybrać pozycję WebApplication1 Properties (Właściwości aplikacji internetowej1).
    2. Wybierz kartę Sieć Web .
    3. Wprowadź nazwę FQDN dla adresu URL projektu. Na przykład należy wprowadzić http://www.wingtiptoys.com , jeśli było to mapowanie nazwy FQDN dodane do pliku HOSTS.
  • Skonfiguruj IIS Express do używania nazwy FQDN dla aplikacji:

    1. Otwórz wiersz polecenia z podwyższonym poziomem uprawnień w systemie Windows.

    2. Wpisz następujące polecenie, aby zmienić folder na IIS Express:

      cd /d "%ProgramFiles%\IIS Express"

    3. Wpisz następujące polecenie, aby dodać nazwę FQDN do aplikacji:

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

    Gdzie WebApplication1 to nazwa projektu, a bindingInformation zawiera numer portu i nazwę FQDN, której chcesz użyć do testowania.

Jak uzyskać ustawienia aplikacji na potrzeby uwierzytelniania firmy Microsoft

Łączenie aplikacji z usługą Windows Live na potrzeby uwierzytelniania firmy Microsoft jest prostym procesem. Jeśli aplikacja nie jest jeszcze połączona z usługą Windows Live, możesz wykonać następujące kroki:

  1. Przejdź do https://go.microsoft.com/fwlink/?LinkID=144070 strony i wprowadź nazwę konta Microsoft i hasło po wyświetleniu monitu, a następnie kliknij pozycję Zaloguj:

  2. Wybierz pozycję Dodaj aplikację i wprowadź nazwę aplikacji po wyświetleniu monitu, a następnie kliknij pozycję Utwórz:

    Obraz przedstawiający dodawanie aplikacji

  3. Wybierz aplikację w obszarze Nazwa i zostanie wyświetlona strona właściwości aplikacji.

  4. Wprowadź domenę przekierowania dla aplikacji. Skopiuj identyfikator aplikacji i w obszarze Wpisy tajne aplikacji wybierz pozycję Generuj hasło. Skopiuj wyświetlone hasło. Identyfikator aplikacji i hasło są identyfikatorem klienta i kluczem tajnym klienta. Wybierz przycisk OK , a następnie pozycję Zapisz.

    Obraz przedstawiający informacje o domenie przekierowania

Opcjonalnie: Wyłącz rejestrację lokalną

Bieżąca funkcja rejestracji lokalnej ASP.NET nie uniemożliwia programom zautomatyzowanym (botom) tworzenia kont członkowskich; na przykład przy użyciu technologii zapobiegania botom i walidacji, takiej jak CAPTCHA. W związku z tym należy usunąć lokalny formularz logowania i link rejestracji na stronie logowania. W tym celu otwórz stronę _Login.cshtml w projekcie, a następnie oznacz jako komentarz wiersze lokalnego panelu logowania i link rejestracji. Wynikowa strona powinna wyglądać podobnie do następującego przykładu kodu:

<!-- 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 -->

Po wyłączeniu lokalnego panelu logowania i linku rejestracji na stronie logowania będą wyświetlane tylko zewnętrzni dostawcy uwierzytelniania, których włączono:

Obraz przedstawiający tylko identyfikator logowania dostawców zewnętrznych