Início Rápido: Aplicativo Web ASP.NET Core que conecta usuários no Microsoft Entra

Seja bem-vindo! Essa provavelmente não é a página que você esperava. Enquanto trabalhamos em uma correção, este link direcionará você para o artigo certo:

Início Rápido: adicionar entrada com a Microsoft a um aplicativo Web ASP.NET

Pedimos desculpas pela inconveniência e agradecemos sua paciência enquanto trabalhamos para resolver isso.

Neste início rápido, você baixará e executará um exemplo de código que demonstra um aplicativo web ASP.NET que pode conectar usuários com contas do Microsoft Entra.

Etapa 1: Configurar seu aplicativo no portal do Azure

Para que o exemplo de código deste guia de início rápido funcione, insira https://localhost:44368/ em URI de redirecionamento.

Already configured o seu aplicativo já está configurado com esse atributo.

Etapa 2: Baixe o projeto

Execute o projeto usando o Visual Studio 2019.

Dica

Para evitar erros causados por limitações de comprimento do caminho no Windows, é recomendável extrair os arquivos em um diretório próximo à raiz da unidade.

Etapa 3: seu aplicativo está configurado e pronto para ser executado

Configuramos o seu projeto com os valores das propriedades do seu aplicativo.

  1. Extraia o arquivo. zip em uma pasta local próxima à pasta raiz. Por exemplo, extraia em C:\Azure-Samples.

    É recomendável extrair os arquivos em um diretório próximo à raiz da unidade para evitar erros causados por limitações de comprimento do caminho no Windows.

  2. Abra a solução no 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 selecionar Restaurar os pacotes do NuGet.

  4. Abra o Console do Gerenciador de Pacotes selecionando Exibir>Outras Janelas>Console do Gerenciador de Pacotes. Em seguida, execute Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

Observação

Enter_the_Supported_Account_Info_Here

Mais informações

Esta seção apresenta uma visão geral do código necessário para a entrada de usuários. Essa visão geral pode ser útil para entender como o código funciona, quais são os argumentos principais e como adicionar credenciais a um aplicativo ASP.NET existente.

Como o exemplo funciona

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

Pacotes do NuGet de middleware OWIN

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. Você pode instalar esses pacotes executando os seguintes comandos no Console do Gerenciador de Pacotes no Visual Studio:

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

Classe de inicialização do OWIN

O middleware OWIN usa uma classe de inicialização que é executada quando o processo de hospedagem é iniciado. Neste guia de início rápido, o arquivo startup.cs está na pasta raiz. O seguinte código mostra os parâmetros usados neste guia de início rápido:

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

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI 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's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // 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 organization, set ValidateIssuer to true and the '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 the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
Where Descrição
ClientId A ID do aplicativo registrado no portal do Azure.
Authority O ponto de extremidade do STS (serviço de token de segurança) para o usuário se autenticar. Geralmente, ele é https://login.microsoftonline.com/{tenant}/v2.0 para a nuvem pública. Nessa URL, {tenant} é o nome do seu locatário, da ID do locatário ou de common para uma referência ao ponto de extremidade comum. (O ponto de extremidade comum é usado para aplicativos multilocatários.)
RedirectUri A URL para a qual os usuários são enviados após a autenticação na plataforma de identidade da Microsoft.
PostLogoutRedirectUri A URL para a qual os usuários são enviados após saírem.
Scope A lista de escopos que estão sendo solicitados, separados por espaços.
ResponseType A solicitação da resposta da autenticação contém um código de autorização e um token de ID.
TokenValidationParameters Uma lista de parâmetros para validação de token. Nesse caso, ValidateIssuer é definido como false para indicar que ele pode aceitar entradas de todos os tipos de conta corporativa ou de estudante ou pessoal.
Notifications Uma lista de delegados que podem ser executados em mensagens OpenIdConnect.

Observação

A configuração de ValidateIssuer = false é uma simplificação deste início rápido. Em aplicativos reais, valide o emissor. Consulte os exemplos para entender como fazer isso.

Desafio de autenticação

Você pode forçar um usuário a entrar solicitando um desafio de autenticação em seu controlador:

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

Dica

Solicitar um desafio de autenticação usando esse método é opcional. Normalmente, você o usaria quando quisesse que uma exibição fosse acessível de usuários autenticados e não autenticados. Como alternativa, você pode proteger os controladores usando o método descrito na próxima seção.

Atributo para proteger um controlador ou ações do controlador

Você pode proteger um controlador ou ações do controlador usando o atributo [Authorize]. Esse atributo restringe o acesso ao controlador ou às ações permitindo que apenas usuários autenticados acessem as ações no controlador. Um desafio de autenticação ocorrerá automaticamente quando um usuário não autenticado tentar acessar uma das ações ou controladores decorados pelo atributo [Authorize].

Ajuda e suporte

Se precisar de ajuda, quiser relatar um problema ou desejar saber mais sobre as opções de suporte, confira Ajuda e suporte para desenvolvedores.

Próximas etapas

Para obter um guia passo a passo completo sobre a criação de aplicativos e novos recursos, incluindo uma explicação completa deste guia de início rápido, experimente o tutorial do ASP.NET.