Início Rápido: Adicionar a opção Entrar com uma Conta da Microsoft a um aplicativo Web ASP.NETQuickstart: Add sign-in with Microsoft to an ASP.NET web app

Aplica-se a:Applies to:
  • ponto de extremidade da plataforma de identidade da MicrosoftMicrosoft identity platform endpoint

Neste início rápido, você aprenderá como um aplicativo Web ASP.NET pode entrar em contas pessoais (hotmail.com, outlook.com, outros) e contas corporativas e de estudante de qualquer instância do Azure AD (Azure Active Directory).In this quickstart, you'll learn how an ASP.NET web app can sign in personal accounts (hotmail.com, outlook.com, others) and work and school accounts from any Azure Active Directory (Azure AD) instance.

Mostra como o aplicativo de exemplo gerado por este início rápido funciona

Registrar e baixar o aplicativo de início rápidoRegister and download your quickstart app

Você tem duas opções para iniciar o aplicativo de início rápido:You have two options to start your quickstart application:

Opção 1: Registrar e configurar o aplicativo automaticamente e, em seguida, baixar seu exemplo de códigoOption 1: Register and auto configure your app and then download your code sample

  1. Acesse o novo painel do portal do Azure – Registros de aplicativo.Go to the new Azure portal - App registrations pane.
  2. Insira um nome para o aplicativo e clique em Registrar.Enter a name for your application and click Register.
  3. Siga as instruções para baixar e configurar automaticamente o novo aplicativo com apenas um clique.Follow the instructions to download and automatically configure your new application for you in one click.

Opção 2: Registrar e configurar manualmente o aplicativo e o exemplo de códigoOption 2: Register and manually configure your application and code sample

Etapa 1: Registre seu aplicativoStep 1: Register your application

Para registrar seu aplicativo e adicionar as informações de registro do aplicativo à solução manualmente, siga estas etapas:To register your application and add the app's registration information to your solution manually, follow these steps:

  1. Entre no portal do Azure usando uma conta corporativa ou de estudante ou uma conta pessoal da Microsoft.Sign in to the Azure portal using either a work or school account, or a personal Microsoft account.
  2. Se sua conta fornecer acesso a mais de um locatário, selecione sua conta no canto superior direito e defina sua sessão do portal para o locatário desejado do Azure AD.If your account gives you access to more than one tenant, select your account in the top right corner, and set your portal session to the desired Azure AD tenant.
  3. Navegue até a página Registros de aplicativo da plataforma de identidade da Microsoft para desenvolvedores.Navigate to the Microsoft identity platform for developers App registrations page.
  4. Selecione Novo registro.Select New registration.
  5. Quando a página Registrar um aplicativo for exibida, insira as informações de registro do aplicativo:When the Register an application page appears, enter your application's registration information:
    • Na seção Nome, insira um nome de aplicativo relevante que será exibido aos usuários do aplicativo, por exemplo, ASPNET-Quickstart.In the Name section, enter a meaningful application name that will be displayed to users of the app, for example ASPNET-Quickstart.
    • Adicione https://localhost:44368/ na URI de redirecionamento e clique em Registrar.Add https://localhost:44368/ in Redirect URI, and click Register. Selecione o menu Autenticação menu, defina Tokens de ID em Concessão Implícitae selecione Salvar.Select Authentication menu, set ID tokens under Implicit Grant, and then select Save.

Etapa 1: Configurar seu aplicativo no portal do AzureStep 1: Configure your application in Azure portal

Para que o exemplo de código deste início rápido funcione, você precisa adicionar uma URL de resposta como https://localhost:44368/.For the code sample for this quickstart to work, you need to add a reply URL as https://localhost:44368/.

Já configurado Seu aplicativo já está configurado com esse atributoAlready configured Your application is configured with this attribute

Etapa 2: Baixar o seu projetoStep 2: Download your project

Baixar a solução do Visual Studio 2019Download the Visual Studio 2019 solution

Etapa 3: Configurar o projeto do Visual StudioStep 3: Configure your Visual Studio project

  1. Extraia o arquivo zip para uma pasta local mais próxima da pasta raiz, por exemplo, C:\Azure-SamplesExtract the zip file to a local folder closer to the root folder - for example, C:\Azure-Samples

  2. Abra a solução no Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln)Open the solution in Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln)

  3. Dependendo da versão do Visual Studio, pode ser necessário clicar com o botão direito do mouse no projeto AppModelv2-WebApp-OpenIDConnect-DotNet e Restaurar os pacotes do NuGetDepending on the version of Visual Studio, you might need to right click on the project AppModelv2-WebApp-OpenIDConnect-DotNet and Restore NuGet packages

  4. Abra o Console do Gerenciador de Pacotes (Exibir -> Outras Janelas -> Console do Gerenciador de Pacotes) e execute Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -rOpen the Package Manager Console (View -> Other Windows -> Package Manager Console) and run Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

  5. Edite Web.config e substitua os parâmetros ClientId e Tenant por:Edit Web.config and replace the parameters ClientId and Tenant with:

    <add key="ClientId" value="Enter_the_Application_Id_here" />
    <add key="Tenant" value="Enter_the_Tenant_Info_Here" />
    

Observação

Este início rápido dá suporte a Enter_the_Supported_Account_Info_Here.This quickstart supports Enter_the_Supported_Account_Info_Here.

Em que:Where:

  • Enter_the_Application_Id_here: é a ID do aplicativo que você registrou.Enter_the_Application_Id_here - is the Application Id for the application you registered.
  • Enter_the_Tenant_Info_Here: é uma das opções abaixo:Enter_the_Tenant_Info_Here - is one of the options below:
    • Se seu aplicativo dá suporte a Somente minha organização, substitua esse valor pela ID do Locatário ou pelo Nome do locatário (por exemplo, contoso.microsoft.com)If your application supports My organization only, replace this value with the Tenant Id or Tenant name (for example, contoso.microsoft.com)
    • Se seu aplicativo dá suporte a Contas em qualquer diretório organizacional, substitua esse valor por organizationsIf your application supports Accounts in any organizational directory, replace this value with organizations
    • Se seu aplicativo dá suporte a Todos os usuários de contas da Microsoft, substitua esse valor por commonIf your application supports All Microsoft account users, replace this value with common

Dica

Para encontrar os valores de ID do aplicativo, ID de diretório (locatário) e Tipos de conta com suporte, vá para a página Visão GeralTo find the values of Application ID, Directory (tenant) ID, and Supported account types, go to the Overview page

Mais informaçõesMore information

Esta seção apresenta uma visão geral do código necessário para a entrada de usuários.This section gives an overview of the code required to sign-in users. Esta visão geral pode ser útil para entender como o código funciona, os argumentos principais e também caso você queira adicionar entrada a um aplicativo ASP.NET existente.This overview can be useful to understand how the code works, main arguments, and also if you want to add sign-in to an existing ASP.NET application.

Pacotes do NuGet de middleware OWINOWIN middleware NuGet packages

Você pode configurar o pipeline de autenticação com a autenticação baseada em cookies usando o OpenID Connect no ASP.NET com pacotes de Middleware OWIN.You can set up the authentication pipeline with cookie-based authentication using OpenID Connect in ASP.NET with OWIN Middleware packages. Você pode instalar esses pacotes executando os seguintes comandos no Console do Gerenciador de Pacotes do Visual Studio:You can install these packages by running the following commands in Visual Studio's Package Manager Console:

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

Classe de Inicialização OWINOWIN Startup Class

O middleware OWIN usa uma classe de inicialização que é executada quando o processo de hospedagem é inicializado.The OWIN middleware uses a startup class that runs when the hosting process initializes. Neste início rápido, o arquivo startup.cs está localizado na pasta raiz.In this quickstart, the startup.cs file located in root folder. O código a seguir mostra o parâmetro usado por este início rápido:The following code shows the parameter used by this quickstart:

public void Configuration(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the ClientId, authority, RedirectUri as obtained from web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the id_token - which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.IdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
WhereWhere
ClientId ID do aplicativo referente ao aplicativo registrado no portal do AzureApplication ID from the application registered in the Azure portal
Authority O ponto de extremidade do STS para o usuário autenticar.The STS endpoint for user to authenticate. Geralmente https://login.microsoftonline.com/{tenant}/v2.0 para a nuvem pública, em que {tenant} é o nome do seu locatário, sua Id do locatário ou common para uma referência ao ponto de extremidade comum (usado para aplicativos multilocatário)Usually https://login.microsoftonline.com/{tenant}/v2.0 for public cloud, where {tenant} is the name of your tenant, your tenant Id, or common for a reference to the common endpoint (used for multi-tenant applications)
RedirectUri URL à qual os usuários são enviados após a autenticação com relação ao ponto de extremidade da plataforma de identidade da MicrosoftURL where users are sent after authentication against Microsoft identity platform endpoint
PostLogoutRedirectUri URL à qual os usuários são enviados após saíremURL where users are sent after signing-off
Scope A lista de escopos que estão sendo solicitados, separados por espaçosThe list of scopes being requested, separated by spaces
ResponseType Solicitação de que a resposta da autenticação contenha um token de IDRequest that the response from authentication contains an ID token
TokenValidationParameters Uma lista de parâmetros para validação de token.A list of parameters for token validation. Nesse caso, ValidateIssuer é definido como false para indicar que ele pode aceitar entradas de quaisquer tipos de conta corporativa ou de estudante ou pessoalIn this case, ValidateIssuer is set to false to indicate that it can accept sign-ins from any personal, or work or school account types
Notifications Uma lista de delegados que podem ser executados em diferentes mensagens OpenIdConnectA list of delegates that can be executed on different OpenIdConnect messages

Observação

A configuração de ValidateIssuer = false é uma simplificação para este início rápido.Setting ValidateIssuer = false is a simplification for this quickstart. Em aplicativos reais, você precisa validar o emissor.In real applications you need to validate the issuer. Consulte os exemplos para entender como fazer isso.See the samples to understand how to do that.

Iniciar um desafio de autenticaçãoInitiate an authentication challenge

Você pode forçar um usuário a entrar solicitando um desafio de autenticação em seu controlador:You can force a user to sign in by requesting an authentication challenge in your controller:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Dica

Solicitar um desafio de autenticação usando o método acima é opcional e normalmente é usado quando você deseja que uma exibição fique acessível para usuários autenticados e não autenticados.Requesting an authentication challenge using the method above is optional and normally used when you want a view to be accessible from both authenticated and non-authenticated users. Como alternativa, você pode proteger os controladores usando o método descrito na próxima seção.Alternatively, you can protect controllers by using the method described in the next section.

Proteger um controlador ou um método do controladorProtect a controller or a controller's method

Você pode proteger um controlador ou ações do controlador usando o atributo [Authorize].You can protect a controller or controller actions using the [Authorize] attribute. Esse atributo restringe o acesso ao controlador ou ações permitindo que somente usuários autenticados possam acessar as ações no controlador, o que significa que o desafio de autenticação ocorrerá automaticamente quando um usuário não autenticado tentar acessar uma das ações ou controlador decoradas pelo atributo [Authorize].This attribute restricts access to the controller or actions by allowing only authenticated users to access the actions in the controller, which means that authentication challenge will happen automatically when a non-authenticated user tries to access one of the actions or controller decorated by the [Authorize] attribute.

Próximas etapasNext steps

Experimente o tutorial do ASP.NET para um guia passo a passo completo sobre a criação de aplicativos e novos recursos, incluindo uma explicação completa deste início rápido.Try out the ASP.NET tutorial for a complete step-by-step guide on building applications and new features, including a full explanation of this quickstart.

Conheça as etapas para criar o aplicativo usado neste início rápidoLearn the steps to create the application used in this quickstart

Ajuda e suporteHelp and support

Se você precisar de Ajuda, quiser relatar um problema ou aprender mais sobre as opções de suporte, consulte o seguinte artigo:If you need help, want to report an issue, or want to learn more about your support options, see the following article:

Ajude-nos a melhorar a plataforma de identidade da Microsoft.Help us improve the Microsoft identity platform. Deixe sua opinião respondendo a uma breve pesquisa de duas perguntas.Tell us what you think by completing a short two-question survey.