Partilhar via


Início rápido: Aplicação web ASP.NET que permite a autenticação de utilizadores do Microsoft Entra

Bem-vindo! Esta provavelmente não é a página que você estava esperando. Enquanto trabalhamos em uma correção, este link deve levá-lo ao artigo certo:

Guia de início rápido: adicionar início de sessão na Microsoft a uma aplicação Web ASP.NET

Pedimos desculpas pelo inconveniente e agradecemos a sua paciência enquanto trabalhamos para resolver este problema.

Nesta introdução rápida, descarrega e executa um exemplo de código que demonstra uma aplicação web ASP.NET que pode permitir que utilizadores iniciem sessão com contas da Microsoft Entra.

Etapa 1: Configurar seu aplicativo no portal do Azure

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

Já configurado Seu aplicativo está configurado com esse atributo.

Passo 2: Faça o download do projeto

Execute o projeto usando o Visual Studio 2019.

Dica

Para evitar erros causados por limitações de comprimento de caminho no Windows, recomendamos extrair o arquivo ou clonar o repositório em um diretório perto da raiz da unidade.

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

Configuramos seu projeto com valores das propriedades do seu aplicativo.

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

    Recomendamos extrair o arquivo para um diretório perto da raiz da sua unidade para evitar erros causados por limitações de comprimento de caminho no Windows.

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

  3. Dependendo da versão do Visual Studio, talvez seja necessário clicar com o botão direito do mouse no projeto >AppModelv2-WebApp-OpenIDConnect-DotNet e selecionar Restaurar pacotes NuGet.

  4. Abra o Console do Gerenciador de Pacotes selecionando Ver>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 fornece uma visão geral do código necessário para iniciar sessão dos utilizadores. Esta visão geral pode ser útil para entender como o código funciona, quais são os principais argumentos e como adicionar entrada a um aplicativo ASP.NET existente.

Como funciona a amostra

Diagrama da interação entre o navegador da Web, o aplicativo Web e a plataforma de identidade da Microsoft no aplicativo de exemplo.

Pacotes NuGet de middleware OWIN

Você pode configurar o pipeline de autenticação com autenticação baseada em cookie usando o OpenID Connect em 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 OWIN

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

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
            }
        }
    );
}
Onde Descrição
ClientId A ID do aplicativo registrado no portal do Azure.
Authority O ponto de extremidade do serviço de token de segurança (STS) para autenticar o utilizador. Geralmente é https://login.microsoftonline.com/{tenant}/v2.0 para a nuvem pública. Nesse URL, {tenant} é o nome do seu inquilino, o seu ID de inquilino ou common para uma referência ao ponto de extremidade comum. (O ponto de extremidade comum é usado para aplicações multilocatário.)
RedirectUri A URL para onde os usuários são enviados após a autenticação na plataforma de identidade da Microsoft.
PostLogoutRedirectUri A URL para onde os utilizadores são enviados após fazerem logout.
Scope A lista de âmbitos solicitados, separados por espaços.
ResponseType A solicitação para que a resposta da autenticação contenha um código de autorização e um token de identificação.
TokenValidationParameters Uma lista de parâmetros para validação de token. Nesse caso, ValidateIssuer é definido como false para indicar que pode aceitar entradas de qualquer tipo de conta pessoal, profissional ou de estudante.
Notifications Uma lista de delegados que podem ser executados nas mensagens OpenIdConnect.

Observação

Definir ValidateIssuer = false é uma simplificação para este início rápido. Em aplicações reais, valide o emissor. Veja 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 no 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, utilizá-lo-ia quando quiser que uma vista esteja acessível a utilizadores autenticados e não autenticados. Como alternativa, você pode proteger controladores usando o método descrito na próxima seção.

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

Você pode proteger um controlador ou ações do controlador usando o atributo [Authorize]. Esse atributo restringe o acesso ao controlador ou ações, permitindo que apenas usuários autenticados acessem as ações no controlador. Um desafio de autenticação acontecerá 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 comunicar um problema ou quiser saber mais sobre as suas opções de suporte, consulte Ajuda e suporte para programadores.

Próximos passos

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