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
włączanie uwierzytelniania Google
Warunki wstępne
Aby postępować zgodnie z przykładami w tym przewodniku, musisz mieć następujące elementy:
Visual Studio 2017
Konto dewelopera z identyfikatorem aplikacji i kluczem tajnym dla jednej z następujących usług uwierzytelniania w mediach społecznościowych:
- Konta Microsoft (https://go.microsoft.com/fwlink/?LinkID=144070)
- Twitter (https://dev.twitter.com/)
- Facebook (https://developers.facebook.com/)
- Google (https://developers.google.com/)
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:
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:
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:
- Konta Microsoft (konta windows Live ID)
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
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.
Po wyświetleniu szablonu New ASP.NET Project wybierz szablon Single Page Application i kliknij przycisk Utwórz projekt.
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.
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:
Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs.
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 = "" //});
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();
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:
Po kliknięciu przycisku
Facebook przeglądarka zostanie przekierowana na stronę logowania na Facebooku: 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:
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:
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:
Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs.
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 = "" //});
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" });
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:
Po kliknięciu przycisku Google przeglądarka zostanie przekierowana do strony logowania Google:
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:
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.
Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną dla konta 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:
Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs.
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 = "" //});
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 = "" //});
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:
Po kliknięciu przycisku Microsoft przeglądarka zostanie przekierowana do strony logowania firmy Microsoft:
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:
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:
Po wprowadzeniu nazwy użytkownika i kliknięciu przycisku Zarejestruj się aplikacja internetowa wyświetli domyślną stronę główną dla konta 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:
Po otwarciu projektu w programie Visual Studio 2017 otwórz plik Startup.Auth.cs.
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 = "" //});
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 = "" //});
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:
Po kliknięciu przycisku twitter przeglądarka zostanie przekierowana na stronę logowania do usługi Twitter:
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:
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:
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:
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:
Otwórz wiersz polecenia z podwyższonym poziomem uprawnień w systemie Windows.
Wpisz następujące polecenie:
Notatnik %WinDir%\system32\drivers\etc\hosts
Dodaj wpis podobny do następującego do pliku HOSTS:
127.0.0.1 www.wingtiptoys.com
Zapisz i zamknij plik HOSTS.
Skonfiguruj projekt programu Visual Studio, aby używał pełnej nazwy domeny (FQDN):
- 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.
- Wybierz kartę Web.
- 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.
Otwórz wiersz polecenia z podwyższonym poziomem uprawnień w systemie Windows.
Wpisz następujące polecenie, aby przejść do folderu IIS Express:
cd /d "%ProgramFiles%\IIS Express"
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:
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ę:
Wybierz Dodaj aplikację i wprowadź nazwę swojej aplikacji, kiedy zostaniesz o to poproszony, a następnie kliknij Utwórz:
Wybierz aplikację w sekcji Nazwa, a wyświetli się strona właściwości aplikacji.
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.
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: