Udostępnij za pośrednictwem


Zewnętrzne usługi uwierzytelniania za pomocą internetowego interfejsu API ASP.NET (C#)

W przypadku tworzenia nowych aplikacji internetowych zalecamy Minimal APIs

Zalecamy użycie najbezpieczniejszej opcji bezpiecznego uwierzytelniania. W przypadku aplikacji platformy .NET wdrożonych na platformie Azure zobacz:

Usługa Azure Key Vault i .NET Aspire zapewniają najbezpieczniejszy sposób przechowywania i pobierania tajemnic. Azure Key Vault to usługa w chmurze, która chroni klucze szyfrowania i wpisy tajne, takie jak certyfikaty, parametry połączenia i hasła. Aby zapoznać się z programem .NET Aspire, zobacz Bezpieczna komunikacja między integracjami hostingu a klientem.

Unikaj udzielania poświadczeń hasła właściciela zasobu, ponieważ:

  • Uwidacznia hasło użytkownika klientowi.
  • Jest istotnym zagrożeniem bezpieczeństwa.
  • Należy używać tylko wtedy, gdy inne przepływy uwierzytelniania nie są możliwe.

Po wdrożeniu aplikacji na serwerze testowym zmienna środowiskowa może służyć do ustawiania parametrów połączenia na testowy serwer bazy danych. Zmienne środowiskowe są zwykle przechowywane w postaci zwykłego, niezaszyfrowanego tekstu. W przypadku naruszenia zabezpieczeń maszyny lub procesu zmienne środowiskowe mogą być dostępne dla niezaufanych stron. Zalecamy unikanie używania zmiennych środowiskowych do przechowywania parametrów połączenia produkcyjnego, ponieważ nie jest to najbezpieczniejsze podejście.

Wytyczne dotyczące danych konfiguracji:

  • Nigdy nie przechowuj haseł ani innych poufnych danych w kodzie dostawcy konfiguracji ani w plikach konfiguracji zwykłego tekstu.
  • Nie używaj tajemnic produkcyjnych w środowiskach deweloperskich i testowych.
  • Określ sekrety poza projektem, aby nie mogły zostać przypadkowo zatwierdzone w repozytorium kodu źródłowego.

Programy Visual Studio 2017 i ASP.NET 4.7.2 rozszerzają opcje zabezpieczeń dla aplikacji jednostronicowych (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 mediów społecznościowych: konta Microsoft, Twitter, Facebook i Google.

W tym przewodniku

Warunki 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 internetowych mediów 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. Użycie zewnętrznej usługi uwierzytelniania pozwala użytkownikom końcowym nie tworzyć nowego konta dla aplikacji internetowej oraz nie muszą zapamiętywać kolejnej nazwy użytkownika i hasła.

W przeszłości deweloperzy mieli dwie opcje: 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 prostego przepływu żą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 usługę uwierzytelniania zewnętrznego, a aplikacja internetowa może używać tokenu do zbierania dodatkowych 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.

Notatka

W razie potrzeby może być konieczne dodanie nazwy FQDN do ustawień usługi uwierzytelniania zewnętrznego. Wymóg ten wynika z ograniczeń zabezpieczeń dotyczących niektórych usług uwierzytelniania zewnętrznych, które wymagają, aby FQDN w ustawieniach aplikacji miał zgodną wartość z FQDN używanym 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ć usługę IIS Express do używania nazwy FQDN do testowania tego środowiska, zobacz Configuring IIS Express to use a Fully Qualified Domain Name (Konfigurowanie usługi IIS Express w celu 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. W dalszej części tego przewodnika użyjesz tej przykładowej aplikacji dla każdej z zewnętrznych usług uwierzytelniania.

Uruchom program Visual Studio 2017 i wybierz pozycję Nowy projekt na stronie Start. Możesz też z menu plik wybrać pozycję Nowy, a następnie project.

Kiedy wyświetli się okno dialogowe nowego projektu, wybierz pozycję Zainstalowane i rozwiń Visual C#. Wybierz w obszarze Visual C#pozycję 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 nowego projektu

Po wyświetleniu szablonu New ASP.NET Project wybierz szablon Single Page Application i kliknij przycisk Utwórz projekt.

Obrazek wyboru szablonu

Poczekaj, aż program Visual Studio 2017 utworzy projekt.

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

Podczas pierwszego tworzenia projektu żadna z zewnętrznych usług uwierzytelniania nie jest włączona w pliku Startup.Auth.cs; Poniżej pokazano, jak może wyglądać kod z wyróżnionymi sekcjami, w których można włączyć zewnętrzną usługę uwierzytelniania i wszelkie odpowiednie ustawienia w celu korzystania z kont Microsoft, Twitter, Facebook lub Google w 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 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 ekranu logowania

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

Włączanie uwierzytelniania w serwisie 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 serwisu 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 Facebooka 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 F5 w celu otwarcia aplikacji internetowej w przeglądarce internetowej zobaczysz, że facebook został zdefiniowany jako zewnętrzna usługa uwierzytelniania:

    Obraz Facebook zdefiniowany

  5. Po kliknięciu przycisku Facebook przeglądarka zostanie przekierowana na stronę logowania na Facebooku:

    Obraz strony logowania do Facebooka

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

    Obraz aplikacji internetowej

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

    Obraz wyświetlają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 w celu działania. 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 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 obrazu.

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

    Obraz uprawnień Google

  7. Po kliknięciu przycisku Zaakceptuj, przeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, gdzie zostaniesz poproszony o podanie Nazwy użytkownika, którą chcesz skojarzyć z kontem Google.

    Obraz aplikacji internetowej z monitem o wpisanie nazwy użytkownika do powiązania

  8. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną dla 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 konsumenta i klucza tajnego konsumenta 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ź w kodzie sekcję uwierzytelniania firmy Microsoft.

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

    Obraz zdefiniowany 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 zaloguj sięzostanie wyświetlony monit o sprawdzenie, czy aplikacja internetowa ma uprawnienia dostępu do konta Microsoft:

    Obraz uprawnień firmy Microsoft

  7. Po kliknięciu Takprzeglądarka internetowa zostanie przekierowana z powrotem do aplikacji internetowej, co spowoduje wyświetlenie monitu o Nazwa użytkownika, które chcesz skojarzyć z kontem Microsoft:

    Obraz konta Google do skojarzenia

  8. Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną dla 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 użytkownika w celu działania. Aby uzyskać informacje na temat tworzenia konta dewelopera usługi Twitter i uzyskiwania klucza klienta i klucza tajnego konsumenta, zobacz https://go.microsoft.com/fwlink/?LinkID=252166.

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

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

  2. Znajdź sekcję kodu odpowiedzialną za uwierzytelnianie Twittera:

    // 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 konsumenta 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 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 Twittera

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

    Obraz strony logowania do Twittera

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

    Obraz konta 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ą dla twojego konta w serwisie Twitter:

    Obraz domyślnej strony głównej Twittera

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 usług uwierzytelniania zewnętrznego — umożliwia to użytkownikom aplikacji internetowej korzystanie z konta z dowolnej z usług uwierzytelniania zewnętrznego z włączonymi usługami uwierzytelniania zewnętrznego:

pl-PL: Obraz wielu zewnętrznych usług uwierzytelniania

Konfigurowanie programu 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żesz 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. W tym celu wykonaj następujące czynności:

  • 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, aby używał pełnej nazwy domeny (FQDN):

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

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

    2. Wpisz następujące polecenie, aby przejść do folderu IIS Express:

      cd /d "%ProgramFiles%\IIS Express"

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

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

    Gdzie WebApplication1 to nazwa projektu i 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 czynności:

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

  2. Wybierz Dodaj aplikację i wprowadź nazwę swojej aplikacji, kiedy zostaniesz o to poproszony, a następnie kliknij Utwórz:

    Obraz dodawania aplikacji

  3. Wybierz aplikację w sekcji Nazwa, a wyświetli się strona właściwości aplikacji.

  4. Wprowadź domenę przekierowania dla aplikacji. Skopiuj identyfikator aplikacji i w sekcji Tajemnice aplikacji wybierz opcję Generuj hasło . Skopiuj wyświetlone hasło. Identyfikator aplikacji i hasło są identyfikatorem klienta i kluczem tajnym klienta. Wybierz pozycję Ok, a następnie Zapisz.

    Obraz informacji 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. Aby to zrobić, otwórz stronę _Login.cshtml w swoim projekcie, a następnie skomentuj wiersze dla lokalnego panelu logowania i linku 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 strona logowania będzie wyświetlać tylko zewnętrznych dostawców uwierzytelniania, których włączono:

Obraz dostawców zewnętrznych tylko logowanie