Início Rápido: Adicionar início de sessão com a Microsoft a uma aplicação Web

Neste início rápido, vai transferir e executar um exemplo de código que demonstra uma aplicação Web ASP.NET que pode iniciar sessão de utilizadores com contas do Azure Active Directory (Azure AD).

Veja Como funciona o exemplo para uma ilustração.

Pré-requisitos

Registar e transferir a aplicação

Tem duas opções para começar a criar a sua aplicação: configuração automática ou manual.

Configuração automática

Se quiser configurar automaticamente a sua aplicação e, em seguida, transferir o exemplo de código, siga estes passos:

  1. Aceda à página portal do Azure do registo de aplicações.
  2. Introduza um nome para a sua aplicação e xelecione Registar.
  3. Siga as instruções para transferir e configurar automaticamente a sua nova aplicação com um só clique.

Configuração manual

Se quiser configurar manualmente a aplicação e o exemplo de código, utilize os seguintes procedimentos.

Passo 1: Registar a aplicação

  1. Inicie sessão no Portal do Azure.
  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretório + subscrição no menu superior para mudar para o inquilino no qual pretende registar a aplicação.
  3. Procure e selecione Azure Active Directory.
  4. Em Gerir, selecione Registos de aplicações>Novo registo.
  5. Em Nome, introduza um nome para a sua aplicação. Por exemplo, introduza ASPNET-Quickstart. Os utilizadores da sua aplicação verão este nome e poderá alterá-lo mais tarde.
  6. Defina o tipo de URI de Redirecionamento como Web e valor como https://localhost:44368/.
  7. Selecione Registar.
  8. Em Gerir, selecione Autenticação.
  9. Na secção Concessão implícita e fluxos híbridos , selecione Tokens de ID.
  10. Selecione Guardar.

Passo 2: Transferir o projeto

Transferir o exemplo de código do ASP.NET

Dica

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

Passo 3: executar o projeto

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

    Recomendamos que extraia o arquivo para um diretório perto da 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, poderá ter de clicar com o botão direito do rato no projeto AppModelv2-WebApp-OpenIDConnect-DotNet e, em seguida, selecionar Restaurar pacotes NuGet.

  4. Abra a Consola do Gestor de Pacotes ao selecionar Ver> OutraConsola do Gestor de Pacotes doWindows>. Em seguida, execute o Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

  5. EditeWeb.config e substitua os parâmetros ClientId, Tenante redirectUri por:

    <add key="ClientId" value="Enter_the_Application_Id_here" />
    <add key="Tenant" value="Enter_the_Tenant_Info_Here" />
    <add key="redirectUri" value="https://localhost:44368/" />
    

    Nesse código:

    • Enter_the_Application_Id_here é o ID da aplicação (cliente) do registo de aplicações que criou anteriormente. Localize o ID da aplicação (cliente) na página Descrição Geral da aplicação no Registos de aplicações no portal do Azure.
    • Enter_the_Tenant_Info_Here é uma das seguintes opções:
      • Se a sua aplicação suportar Apenas A minha organização, substitua este valor pelo ID do diretório (inquilino) ou pelo nome do inquilino (por exemplo, contoso.onmicrosoft.com). Localize o ID do diretório (inquilino) na página Descrição Geral da aplicação no Registos de aplicações no portal do Azure.
      • Se a sua aplicação suportar Contas em qualquer diretório organizacional, substitua este valor por organizations.
      • Se a sua aplicação suportar Todos os utilizadores da conta Microsoft, substitua este valor por common.
    • redirectUrié o URI de Redirecionamento que introduziu anteriormente no Registos de aplicações no portal do Azure.

Mais informações

Esta secção fornece uma descrição geral do código necessário para iniciar sessão dos utilizadores. Esta descrição geral pode ser útil para compreender como funciona o código, quais são os principais argumentos e como adicionar o início de sessão a uma aplicação ASP.NET existente.

Como funciona o exemplo

Diagrama da interação entre o browser, a aplicação Web e o plataforma de identidades da Microsoft na aplicação de exemplo.

Pacotes NuGet de middleware OWIN

Pode configurar o pipeline de autenticação com autenticação baseada em cookies com o OpenID Connect no ASP.NET com pacotes de middleware OWIN. Pode instalar estes pacotes ao executar os seguintes comandos na Consola do Gestor 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 arranque OWIN

O middleware OWIN utiliza uma classe de arranque que é executada quando o processo de alojamento é iniciado. Neste início rápido, o ficheiro startup.cs encontra-se na pasta raiz. O código seguinte mostra os parâmetros que este início rápido utiliza:

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 Description
ClientId O ID da aplicação da aplicação registado no portal do Azure.
Authority O ponto final do serviço de tokens de segurança (STS) para o utilizador autenticar. Normalmente, é https://login.microsoftonline.com/{tenant}/v2.0 para a cloud pública. Nesse URL, {tenant} é o nome do inquilino, do ID do inquilino ou common de uma referência ao ponto final comum. (O ponto final comum é utilizado para aplicações multi-inquilino.)
RedirectUri O URL para onde os utilizadores são enviados após a autenticação no plataforma de identidades da Microsoft.
PostLogoutRedirectUri O URL para onde os utilizadores são enviados depois de terminarem sessão.
Scope A lista de âmbitos que estão a ser pedidos, separados por espaços.
ResponseType O pedido para que a resposta da autenticação contenha um código de autorização e um token de ID.
TokenValidationParameters Uma lista de parâmetros para a validação do token. Neste caso, ValidateIssuer está definido para false indicar que pode aceitar inícios de sessão de qualquer tipo de conta pessoal, profissional ou escolar.
Notifications Uma lista de delegados que podem ser executados em OpenIdConnect mensagens.

Nota

A definição ValidateIssuer = false é uma simplificação para este início rápido. Em aplicações reais, valide o emissor. Veja os exemplos para compreender como fazê-lo.

Desafio de autenticação

Pode forçar um utilizador a iniciar sessão, solicitando um desafio de autenticação no seu controlador:

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

Dica

Pedir um desafio de autenticação com este método é opcional. Normalmente, utilizá-la-ia quando pretende que uma vista seja acessível a partir de utilizadores autenticados e não autenticados. Em alternativa, pode proteger os controladores utilizando o método descrito na secção seguinte.

Atributo para proteger um controlador ou uma ação de controlador

Pode proteger ações de controladores ou controladores com o [Authorize] atributo . Este atributo restringe o acesso ao controlador ou ações ao permitir que apenas os utilizadores autenticados acedam às ações no controlador. Um desafio de autenticação ocorrerá automaticamente quando um utilizador não autenticado tentar aceder a uma das ações ou controladores decorados pelo [Authorize] atributo.

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.

Passos seguintes

Para obter um guia passo a passo completo sobre a criação de aplicações e novas funcionalidades, incluindo uma explicação completa deste início rápido, experimente o tutorial ASP.NET.

O guia de início rápido seguinte utiliza um exemplo de código de aplicação Web ASP.NET Core para demonstrar como iniciar sessão de utilizadores de qualquer organização do Azure Active Directory (Azure AD).

Veja Como funciona o exemplo para obter uma ilustração.

Pré-requisitos

Registar e transferir a sua aplicação de início rápido

Passo 1: Registar a aplicação

  1. Inicie sessão no Portal do Azure.
  2. Se o acesso a vários inquilinos estiver disponível, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino no qual pretende registar a aplicação.
  3. Procure e selecione Azure Active Directory.
  4. Em Gerir, selecione Registos de aplicações>Novo registo.
  5. Em Nome, introduza um nome para a aplicação. Por exemplo, introduza AspNetCore-Quickstart. Os utilizadores da aplicação verão este nome e poderão ser alterados mais tarde.
  6. Defina o tipo de URI de Redirecionamento como Web e o valor como https://localhost:44321/signin-oidc.
  7. Selecione Registar.
  8. Em Gerir, selecione Autenticação.
  9. Para o URL de fim de sessão do canal frontal, introduza https://localhost:44321/signout-oidc.
  10. Em Concessão implícita e fluxos híbridos, selecione Tokens de ID.
  11. Selecione Guardar.
  12. Em Gerir, selecione Segredos de certificados Segredos &>>docliente Novo segredo do cliente.
  13. Introduza uma Descrição, por exemplo clientsecret1.
  14. Selecione Em 1 ano para a expiração do segredo.
  15. Selecione Adicionar e registe imediatamente o Valor do segredo para utilização num passo posterior. O valor do segredo nunca mais é apresentado e é irremediável por outros meios. Grave-o numa localização segura como faria com qualquer palavra-passe.

Passo 2: Transferir o projeto de ASP.NET Core

Transferir a solução de ASP.NET Core

Nota

Atualmente, o exemplo de código destina-se ASP.NET Core 3.1. O exemplo pode ser atualizado para utilizar o .NET Core 6.0 e é abrangido nos seguintes passos: Atualizar o código de exemplo para ASP.NET Core 6.0 Este início rápido será preterido num futuro próximo e será atualizado para utilizar o .NET 6.0.

Passo 3: Configurar o projeto de ASP.NET Core

  1. Extraia o ficheiro .zip para uma pasta local próxima da raiz do disco para evitar erros causados por limitações de comprimento do caminho no Windows. Por exemplo, extraia para C:\Azure-Samples.

  2. Abra a solução no editor de código escolhido.

  3. Em appsettings.json, substitua os valores de ClientIde TenantId. O valor do ID da aplicação (cliente) e do ID do diretório (inquilino) pode ser encontrado na página Descrição Geral da aplicação no portal do Azure.

    "Domain": "[Enter the domain of your tenant, e.g. contoso.onmicrosoft.com]",
    "ClientId": "Enter_the_Application_Id_here",
    "TenantId": "common",
    
    • Enter_the_Application_Id_Here é o ID da aplicação (cliente) da aplicação registada.
    • Substitua por Enter_the_Tenant_Info_Here um dos seguintes:
      • Se a aplicação suportar Contas apenas neste diretório organizacional, substitua este valor pelo ID do diretório (inquilino) (um GUID) ou nome do inquilino (por exemplo, contoso.onmicrosoft.com). O ID do diretório (inquilino) pode ser encontrado na página Descrição Geral da aplicação.
      • Se a aplicação suportar Contas em qualquer diretório organizacional, substitua este valor por organizations.
      • Se a aplicação suportar Todos os utilizadores da conta Microsoft, deixe este valor como common.
    • Substitua Enter_the_Client_Secret_Here pelo segredo do Cliente que foi criado e registado num passo anterior.

Neste início rápido, não altere quaisquer outros valores no ficheiro appsettings.json .

Passo 4: atualizar o código de exemplo para ASP.NET Core 6.0

Para atualizar este exemplo de código para o destino ASP.NET Core 6.0, siga estes passos:

  1. Abrir WebApp-OpenIDConnect-DotNet.csproj

  2. Remova a seguinte linha:

    <TargetFramework>netcoreapp3.1</TargetFramework>
    
  3. Adicione a seguinte linha no respetivo local:

    <TargetFramework>netcoreapp6.0</TargetFramework>
    

Este passo irá garantir que o exemplo tem como destino a arquitetura .NET Core 6.0.

Passo 5: Compilar e executar a aplicação

Crie e execute a aplicação no Visual Studio ao selecionar o menu >DepurarIniciar Depuração ou premindo a tecla F5.

Será apresentado um pedido de credenciais e, em seguida, um pedido de consentimento para as permissões necessárias para a aplicação. Selecione Aceitar no pedido de consentimento.

Captura de ecrã a mostrar a caixa de diálogo de consentimento, com as permissões que a aplicação está a pedir ao utilizador.

Depois de consentir as permissões pedidas, a aplicação apresenta que o início de sessão foi bem-sucedido com as credenciais corretas do Azure Active Directory. O endereço de e-mail da conta do utilizador será apresentado na secção de resultados da API da página. Isto foi extraído através do Graph API da Microsoft.

Browser a apresentar a aplicação Web em execução e o utilizador com sessão iniciada

Mais informações

Esta secção fornece uma descrição geral do código necessário para iniciar sessão dos utilizadores e chamar o microsoft Graph API em seu nome. Esta descrição geral pode ser útil para compreender como funciona o código, os principais argumentos e também se quiser adicionar o início de sessão a uma aplicação de ASP.NET Core existente e chamar o Microsoft Graph. Utiliza Microsoft.Identity.Web, que é um wrapper em torno de MSAL.NET.

Como funciona o exemplo

Diagrama da interação entre o browser, a aplicação Web e o plataforma de identidades da Microsoft na aplicação de exemplo.

Classe de arranque

O middleware Microsoft.AspNetCore.Authentication utiliza uma Startup classe que é executada quando o processo de alojamento é iniciado:

  // Get the scopes from the configuration (appsettings.json)
  var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');

  public void ConfigureServices(IServiceCollection services)
  {
      // Add sign-in with Microsoft
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

            // Add the possibility of acquiring a token to call a protected web API
            .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // Enables controllers and pages to get GraphServiceClient by dependency injection
                // And use an in memory token cache
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddInMemoryTokenCaches();

      services.AddControllersWithViews(options =>
      {
          var policy = new AuthorizationPolicyBuilder()
              .RequireAuthenticatedUser()
              .Build();
          options.Filters.Add(new AuthorizeFilter(policy));
      });

      // Enables a UI and controller for sign in and sign out.
      services.AddRazorPages()
          .AddMicrosoftIdentityUI();
  }

O AddAuthentication() método configura o serviço para adicionar a autenticação baseada em cookies. Esta autenticação é utilizada em cenários de browser e para definir o desafio para o OpenID Connect.

A linha que contém .AddMicrosoftIdentityWebApp adiciona plataforma de identidades da Microsoft autenticação à aplicação. Em seguida, a aplicação é configurada para iniciar sessão de utilizadores com base nas seguintes informações na AzureAD secção do ficheiro de configuração appsettings.json :

chave appsettings.json Description
ClientId ID da aplicação (cliente) da aplicação registada no portal do Azure.
Instance Ponto final do serviço de tokens de segurança (STS) para o utilizador se autenticar. Normalmente, este valor é https://login.microsoftonline.com/, que indica a cloud pública do Azure.
TenantId Nome do seu inquilino ou do ID do inquilino (um GUID) ou common para iniciar sessão de utilizadores com contas escolares ou profissionais ou contas pessoais da Microsoft.

O EnableTokenAcquisitionToCallDownstreamApi método permite que a aplicação adquira um token para chamar APIs Web protegidas. AddMicrosoftGraph permite que os controladores ou páginas do Razor beneficiem diretamente do GraphServiceClient (por injeção de dependência) e os AddInMemoryTokenCaches métodos permitem que a sua aplicação beneficie de uma cache de tokens.

O Configure() método contém dois métodos importantes, app.UseAuthentication() e app.UseAuthorization(), que permitem a respetiva funcionalidade nomeada. Também no Configure() método , tem de registar rotas Web de Identidade da Microsoft com, pelo menos, uma chamada para endpoints.MapControllerRoute() ou uma chamada para endpoints.MapControllers():

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

Proteger um controlador ou o método de um controlador

O controlador ou os respetivos métodos podem ser protegidos ao aplicar o [Authorize] atributo à classe do controlador ou a um ou mais dos respetivos métodos. Este [Authorize] atributo restringe o acesso ao permitir apenas utilizadores autenticados. Se o utilizador ainda não estiver autenticado, pode iniciar um desafio de autenticação para aceder ao controlador. Neste início rápido, os âmbitos são lidos a partir do ficheiro de configuração:

[AuthorizeForScopes(ScopeKeySection = "DownstreamApi:Scopes")]
public async Task<IActionResult> Index()
{
    var user = await _graphServiceClient.Me.Request().GetAsync();
    ViewData["ApiResult"] = user.DisplayName;

    return View();
}

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.

Passos seguintes

O seguinte repositório do GitHub contém o ASP.NET Core exemplo de código referenciado neste início rápido e mais exemplos que mostram como obter o seguinte:

  • Adicionar autenticação a uma nova aplicação Web ASP.NET Core.
  • Chame o Microsoft Graph, outras APIs da Microsoft ou as suas próprias APIs Web.
  • Adicione autorização.
  • Inicie sessão de utilizadores em clouds nacionais ou com identidades sociais.

Neste início rápido, vai transferir e executar um exemplo de código que demonstra como uma aplicação Web Node.js pode iniciar sessão de utilizadores com o fluxo de código de autorização. O exemplo de código também demonstra como obter um token de acesso para chamar o microsoft Graph API.

Veja Como funciona o exemplo para obter uma ilustração.

Este início rápido utiliza a Biblioteca de Autenticação da Microsoft para Node.js (Nó MSAL) com o fluxo de código de autorização.

Pré-requisitos

Registar e transferir a sua aplicação de início rápido

Passo 1: Registar a aplicação

  1. Inicie sessão no Portal do Azure.
  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino no qual pretende registar a aplicação.
  3. Em Gerir, selecione Registos de aplicações>Novo registo.
  4. Introduza um Nome para a sua aplicação. Os utilizadores da sua aplicação poderão ver este nome e pode alterá-lo mais tarde.
  5. Em Tipos de conta suportados, selecione Contas apenas neste diretório organizacional.
  6. Defina o tipo de URI de Redirecionamento como Web e valor como http://localhost:3000/auth/redirect.
  7. Selecione Registar.
  8. Na página Descrição Geral da aplicação, tenha em atenção o valor do ID da Aplicação (cliente) para utilização posterior.
  9. Em Gerir, selecione Segredos de certificados Segredos &>docliente Novo segredo do cliente.> Deixe a descrição em branco e a expiração predefinida e, em seguida, selecione Adicionar.
  10. Anote o valor do segredo do cliente para utilização posterior.

Passo 2: Transferir o projeto

Para executar o projeto com um servidor Web com Node.js, transfira os ficheiros principais do projeto.

Passo 3: Configurar a aplicação Node

Extraia o projeto, abra a pasta ms-identity-node-main e, em seguida, abra o ficheiro .env na pasta Aplicação . Substitua os valores acima da seguinte forma:

Variável Descrição Exemplos
Enter_the_Cloud_Instance_Id_Here A instância da cloud do Azure na qual a sua aplicação está registada https://login.microsoftonline.com/ (inclua a barra de reencaminhamento à direita)
Enter_the_Tenant_Info_here ID do Inquilino ou Domínio primário contoso.microsoft.com ou cbe899ec-5f5c-4efe-b7a0-599505d3d54f
Enter_the_Application_Id_Here ID de cliente da aplicação que registou cbe899ec-5f5c-4efe-b7a0-599505d3d54f
Enter_the_Client_Secret_Here Segredo do cliente da aplicação que registou WxvhStRfDXoEiZQj1qCy
Enter_the_Graph_Endpoint_Here A instância da cloud do Microsoft Graph API que a sua aplicação irá chamar https://graph.microsoft.com/ (inclua a barra de reencaminhamento à direita)
Enter_the_Express_Session_Secret_Here Uma cadeia aleatória de carateres utilizados para assinar o cookie de sessão Express WxvhStRfDXoEiZQj1qCy

O seu ficheiro deve ter um aspeto semelhante ao abaixo:

CLOUD_INSTANCE=https://login.microsoftonline.com/
TENANT_ID=cbe899ec-5f5c-4efe-b7a0-599505d3d54f
CLIENT_ID=fa29b4c9-7675-4b61-8a0a-bf7b2b4fda91
CLIENT_SECRET=WxvhStRfDXoEiZQj1qCy

REDIRECT_URI=http://localhost:3000/auth/redirect
POST_LOGOUT_REDIRECT_URI=http://localhost:3000

GRAPH_API_ENDPOINT=https://graph.microsoft.com/

EXPRESS_SESSION_SECRET=6DP6v09eLiW7f1E65B8k

Passo 4: Executar o projeto

Execute o projeto com Node.js.

  1. Para iniciar o servidor, execute os seguintes comandos a partir do diretório do projeto:

    cd App
    npm install
    npm start
    
  2. Aceda a http://localhost:3000/.

  3. Selecione Iniciar sessão para iniciar o processo de início de sessão.

    Quando iniciar sessão pela primeira vez, é-lhe pedido que dê o seu consentimento para permitir que a aplicação inicie sessão e aceda ao seu perfil. Depois de iniciar sessão com êxito, será redirecionado novamente para a home page da aplicação.

Mais informações

Como funciona o exemplo

O exemplo aloja um servidor Web no localhost, porta 3000. Quando um browser acede a este endereço, a aplicação compõe a home page. Assim que o utilizador selecionar Iniciar sessão, a aplicação redireciona o browser para Azure AD ecrã de início de sessão, através do URL gerado pela biblioteca do Nó MSAL. Após o consentimento do utilizador, o browser redireciona o utilizador novamente para a home page da aplicação, juntamente com um ID e token de acesso.

Nó MSAL

A biblioteca do Nó MSAL inicia sessão nos utilizadores e pede os tokens que são utilizados para aceder a uma API protegida por plataforma de identidades da Microsoft. Pode transferir a versão mais recente com o gestor de pacotes Node.js (npm):

npm install @azure/msal-node

Passos seguintes

Saiba mais sobre o cenário da aplicação Web que o plataforma de identidades da Microsoft suporta:

Neste início rápido, vai transferir e executar um exemplo de código que demonstra como configurar a autenticação do OpenID Connect numa aplicação Web criada com Node.js com o Express. O exemplo foi concebido para ser executado em qualquer plataforma.

Pré-requisitos

Registar a aplicação

  1. Inicie sessão no portal do Azure.

  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino no qual pretende registar a aplicação.

  3. Procure e selecione Azure Active Directory.

  4. Em Gerir, selecione Registos de aplicações>Novo registo.

  5. Introduza um Nome para a sua aplicação, por exemplo MyWebApp. Os utilizadores da sua aplicação poderão ver este nome e pode alterá-lo mais tarde.

  6. Na secção Tipos de conta suportados , selecione Contas em qualquer diretório organizacional e contas Microsoft pessoais (por exemplo, Skype, Xbox, Outlook.com).

    Se existirem mais do que um URIs de redirecionamento, adicione-os no separador Autenticação mais tarde, depois de a aplicação ter sido criada com êxito.

  7. Selecione Registar para criar a aplicação.

  8. Na página Descrição Geral da aplicação, localize o valor de ID da Aplicação (cliente) e registe-o para mais tarde. Precisará deste valor para configurar a aplicação mais à frente neste projeto.

  9. Em Gerir, selecione Autenticação.

  10. Selecione Adicionar uma Web de plataforma>.

  11. Na secção URIs de Redirecionamento , introduza http://localhost:3000/auth/openid/return.

  12. Introduza um URL https://localhost:3000de início de sessão do canal frontal.

  13. Na secção Concessão implícita e fluxos híbridos , selecione Tokens de ID , uma vez que este exemplo requer que o fluxo de concessão implícita seja ativado para iniciar sessão no utilizador.

  14. Selecione Configurar.

  15. Em Gerir, selecione Segredos de certificados Segredos &>docliente Novo segredo do cliente.>

  16. Introduza uma descrição da chave (por exemplo, segredo da aplicação).

  17. Selecione uma duração chave de 1 ano, Em 2 anos ou Nunca Expira.

  18. Selecione Adicionar. O valor da chave será apresentado. Copie o valor da chave e guarde-o numa localização segura para utilização posterior.

Transferir os módulos e a aplicação de exemplo

Em seguida, clone o repositório de exemplo e instale os módulos NPM.

A partir da sua shell ou linha de comandos:

$ git clone git@github.com:AzureADQuickStarts/AppModelv2-WebApp-OpenIDConnect-nodejs.git 

ou

$ git clone https://github.com/AzureADQuickStarts/AppModelv2-WebApp-OpenIDConnect-nodejs.git

No diretório raiz do projeto, execute o comando:

$ npm install

Configurar a aplicação

Indique os parâmetros em exports.creds em config.js conforme indicado.

  • exports.identityMetadata Atualize <tenant_name> com o nome de inquilino Azure AD do formato *.onmicrosoft.com.
  • Atualize exports.clientID com o ID da Aplicação indicado a partir do registo de aplicações.
  • Atualize exports.clientSecret com o segredo da aplicação indicado a partir do registo de aplicações.
  • Atualize exports.redirectUrl com o URI de Redirecionamento indicado a partir do registo de aplicações.

Configuração opcional para aplicações de produção:

  • Atualize exports.destroySessionUrl no config.js, se quiser utilizar um post_logout_redirect_uri.

  • Defina exports.useMongoDBSessionStore em config.js como verdadeiro, se quiser utilizar o mongoDB ou outros arquivos de sessões compatíveis. O arquivo de sessões predefinido neste exemplo é express-session. O arquivo de sessões predefinido não é adequado para produção.

  • Atualize exports.databaseUri, se quiser utilizar o arquivo de sessões do mongoDB e um URI de base de dados diferente.

  • Atualize o exports.mongoDBSessionMaxAge. Aqui, pode especificar quanto tempo pretende manter uma sessão no mongoDB. A unidade é segunda(s).

Compilar e executar a aplicação

Inicie o serviço mongoDB. Se estiver a utilizar a loja de sessões mongoDB nesta aplicação, tem de instalar o mongoDB e iniciar o serviço primeiro. Se estiver a utilizar o arquivo de sessões predefinido, pode ignorar este passo.

Execute a aplicação com o seguinte comando a partir da linha de comandos.

$ node app.js

A saída do servidor é difícil de compreender?:bunyan Utilizamos para registar neste exemplo. A consola não fará muito sentido para si, a menos que instale o bunyan e execute o servidor como acima, mas encaminhe-o através do binário bunyan:

$ npm install -g bunyan

$ node app.js | bunyan

Já está!

Terá um servidor em execução com êxito em http://localhost:3000.

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.

Passos seguintes

Saiba mais sobre o cenário da aplicação Web que o plataforma de identidades da Microsoft suporta:

Neste início rápido, vai transferir e executar um exemplo de código que demonstra como uma aplicação Web Java pode iniciar sessão de utilizadores e chamar o Microsoft Graph API. Os utilizadores de qualquer organização do Azure Active Directory (Azure AD) podem iniciar sessão na aplicação.

Veja Como funciona o exemplo para uma ilustração.

Pré-requisitos

Para executar este exemplo, precisa de:

Registar e transferir a aplicação do início rápido

Existem duas formas de iniciar a sua aplicação de início rápido: express (opção 1) e manual (opção 2).

Opção 1: registar e configurar automaticamente a sua aplicação e, em seguida, transferir o exemplo de código

  1. Aceda à experiência de início rápido portal do Azure - Registos de aplicações.
  2. Introduza um nome para a sua aplicação e, em seguida, selecione Registar.
  3. Siga as instruções na experiência de início rápido do portal para transferir o código da aplicação configurado automaticamente.

Opção 2: registar e configurar manualmente a aplicação e o exemplo de código

Passo 1: Registar a aplicação

Para registar a sua aplicação e adicionar manualmente as informações de registo da aplicação à mesma, siga estes passos:

  1. Inicie sessão no Portal do Azure.
  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino no qual pretende registar a aplicação.
  3. Procure e selecione Azure Active Directory.
  4. Em Gerir, selecione Registos de aplicações.
  5. Selecione Novo registo.
  6. Introduza um Nome para a sua aplicação, por exemplo java-webapp. Os utilizadores da sua aplicação poderão ver este nome. Pode alterá-lo mais tarde.
  7. Selecione Registar.
  8. Na página Descrição geral, anote o ID da Aplicação (cliente) e o ID do Diretório (inquilino). Irá precisar destes valores mais tarde.
  9. Em Gerir, selecione Autenticação.
  10. Selecione Adicionar uma Web de plataforma>.
  11. Na secção URIs de Redirecionamento , introduza https://localhost:8443/msal4jsample/secure/aad.
  12. Selecione Configurar.
  13. Na secção Web, em URIs de Redirecionamento, introduzahttps://localhost:8443/msal4jsample/graph/me como um segundo URI de redirecionamento.
  14. Em Gerir, selecione Segredos de certificados&. Na secção Segredos do cliente, selecione Novo segredo do cliente.
  15. Introduza uma descrição da chave (por exemplo, segredo da aplicação), deixe a expiração predefinida e selecione Adicionar.
  16. Anote o Valor do segredo do cliente. Precisará dela mais tarde.

Passo 2: transferir o exemplo de código

Transferir o exemplo de código

Passo 3: Configurar o exemplo de código

  1. Extraia o ficheiro zip para uma pasta local.

  2. Opcional. Se utilizar um ambiente de desenvolvimento integrado, abra o exemplo nesse ambiente.

  3. Abra o ficheiro application.properties . Pode encontrá-lo na pasta src/main/resources/ . Substitua os valores nos campos aad.clientId, aad.authoritye aad.secretKey pelos valores do ID da aplicação, do ID do inquilino e do segredo do cliente, respetivamente. Eis o aspeto que deve ter:

     aad.clientId=Enter_the_Application_Id_here
     aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/
     aad.secretKey=Enter_the_Client_Secret_Here
     aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad
     aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me
     aad.msGraphEndpointHost="https://graph.microsoft.com/"
    

No código anterior:

  • Enter_the_Application_Id_here é o ID da aplicação da aplicação que registou.
  • Enter_the_Client_Secret_Hereé o Segredo do Cliente que criou em Segredos de Certificados & para a aplicação que registou.
  • Enter_the_Tenant_Info_Here é o valor de ID do Diretório (inquilino) da aplicação que registou.
  1. Para utilizar HTTPS com localhost, forneça as server.ssl.key propriedades. Para gerar um certificado autoassinado, utilize o utilitário keytool (incluído no JRE).

Eis um exemplo:

keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password

server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
  1. Coloque o ficheiro keystore gerado na pasta de recursos .

Passo 4: executar o exemplo de código

Para executar o projeto, siga um destes passos:

  • Execute-o diretamente a partir do IDE com o servidor Spring Boot incorporado.
  • Empacote-o num ficheiro WAR com o Maven e, em seguida, implemente-o numa solução de contentor J2EE, como o Apache Tomcat.
Executar o projeto a partir de um IDE

Para executar a aplicação Web a partir de um IDE, selecione executar e, em seguida, aceda à home page do projeto. Para este exemplo, o URL da home page padrão é https://localhost:8443.

  1. Na primeira página, selecione o botão Iniciar sessão para redirecionar os utilizadores para o Azure Active Directory e pedir-lhes credenciais.

  2. Após a autenticação dos utilizadores, são redirecionados para https://localhost:8443/msal4jsample/secure/aad. Agora têm sessão iniciada e a página irá mostrar informações sobre a conta de utilizador. A IU de exemplo tem estes botões:

    • Terminar Sessão: termina a sessão do utilizador atual na aplicação e redireciona esse utilizador para a home page.
    • Mostrar Informações de Utilizador: adquire um token para o Microsoft Graph e chama o Microsoft Graph com um pedido que contém o token, que devolve informações básicas sobre o utilizador com sessão iniciada.
Executar o projeto a partir do Tomcat

Se quiser implementar o exemplo Web no Tomcat, faça algumas alterações ao código fonte.

  1. Abra ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication.

    • Elimine todo o código fonte e substitua-o por este código:

       package com.microsoft.azure.msalwebsample;
      
       import org.springframework.boot.SpringApplication;
       import org.springframework.boot.autoconfigure.SpringBootApplication;
       import org.springframework.boot.builder.SpringApplicationBuilder;
       import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
      
       @SpringBootApplication
       public class MsalWebSampleApplication extends SpringBootServletInitializer {
      
        public static void main(String[] args) {
         SpringApplication.run(MsalWebSampleApplication.class, args);
        }
      
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
         return builder.sources(MsalWebSampleApplication.class);
        }
       }
      
  2. A porta HTTP predefinida do Tomcat é 8080, mas precisa de uma ligação HTTPS através da porta 8443. Para configurar esta definição:

    • Aceda a tomcat/conf/server.xml.

    • Procure a <connector> etiqueta e substitua o conector existente por este conector:

      <Connector
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="8443" maxThreads="200"
               scheme="https" secure="true" SSLEnabled="true"
               keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword"
               clientAuth="false" sslProtocol="TLS"/>
      
  3. Abra uma janela de Linha de Comandos. Aceda à pasta raiz deste exemplo (onde se encontra o ficheiro pom.xml) e execute mvn package para criar o projeto.

    • Este comando irá gerar um ficheiro msal-web-sample-0.1.0.war no seu diretório /targets .
    • Mude o nome deste ficheiro para msal4jsample.war.
    • Implemente o ficheiro WAR com o Tomcat ou qualquer outra solução de contentor J2EE.
      • Para implementar o ficheiro msal4jsample.war, copie-o para o diretório /webapps/ na instalação do Tomcat e, em seguida, inicie o servidor Tomcat.
  4. Depois de o ficheiro ser implementado, aceda ao https://localhost:8443/msal4jsample através de um browser.

Importante

Esta aplicação de início rápido utiliza um segredo do cliente para se identificar como um cliente confidencial. Uma vez que o segredo do cliente é adicionado como texto simples aos ficheiros do projeto, por motivos de segurança, recomendamos que utilize um certificado em vez de um segredo do cliente antes de utilizar a aplicação num ambiente de produção. Para obter mais informações sobre como utilizar um certificado, veja Credenciais de certificado para autenticação de aplicações.

Mais informações

Como funciona o exemplo

Diagrama que mostra como funciona a aplicação de exemplo gerada por este início rápido.

Obter MSAL

MSAL para Java (MSAL4J) é a biblioteca Java utilizada para iniciar sessão de utilizadores e pedir tokens que são utilizados para aceder a uma API protegida pelo plataforma de identidades da Microsoft.

Adicione MSAL4J à sua aplicação com o Maven ou o Gradle para gerir as suas dependências ao fazer as seguintes alterações ao ficheiro de pom.xml (Maven) ou build.gradle (Gradle) da aplicação.

Em pom.xml:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.0.0</version>
</dependency>

Em build.gradle:

compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'

Inicializar MSAL

Adicione uma referência ao MSAL para Java ao adicionar o seguinte código no início do ficheiro onde irá utilizar o MSAL4J:

import com.microsoft.aad.msal4j.*;

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.

Passos seguintes

Para uma discussão mais aprofundada sobre a criação de aplicações Web que iniciam sessão de utilizadores no plataforma de identidades da Microsoft, veja a série de cenários de várias partes:

Neste início rápido, vai transferir e executar um exemplo de código que demonstra como uma aplicação Web Python pode iniciar sessão de utilizadores e obter um token de acesso para chamar o Microsoft Graph API. Os utilizadores com uma Conta Microsoft pessoal ou uma conta em qualquer organização do Azure Active Directory (Azure AD) podem iniciar sessão na aplicação.

Veja Como funciona o exemplo para uma ilustração.

Pré-requisitos

Registar e transferir a aplicação do início rápido

Tem duas opções para iniciar a sua aplicação de início rápido: express (Opção 1) e manual (Opção 2)

Opção 1: registar e configurar automaticamente a sua aplicação e, em seguida, transferir o exemplo de código

  1. Aceda à experiência de início rápido portal do Azure - Registos de aplicações.
  2. Introduza um nome para a sua aplicação e xelecione Registar.
  3. Siga as instruções para transferir e configurar automaticamente a sua nova aplicação.

Opção 2: registar e configurar manualmente a aplicação e o exemplo de código

Passo 1: Registar a aplicação

Para registar a sua aplicação e adicionar as informações de registo da aplicação à sua solução manualmente, siga os passos a seguir:

  1. Inicie sessão no portal do Azure.
  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretório + subscrição no menu superior para selecionar o inquilino no qual pretende registar uma aplicação.
  3. Em Gerir, selecione Registos de aplicações>Novo registo.
  4. Introduza um Nome para a sua aplicação, por exemplo python-webapp . Os utilizadores da sua aplicação poderão ver este nome e pode alterá-lo mais tarde.
  5. Em Tipos de conta suportados, selecione Contas em qualquer diretório organizacional e contas Microsoft pessoais.
  6. Selecione Registar.
  7. Na página Descrição Geral da aplicação, tenha em atenção o valor do ID da Aplicação (cliente) para utilização posterior.
  8. Em Gerir, selecione Autenticação.
  9. Selecione Adicionar uma Web de plataforma>.
  10. Adicione http://localhost:5000/getAToken como URIs de Redirecionamento.
  11. Selecione Configurar.
  12. Em Gerir, selecione os segredos dos Certificados e, na secção Segredos & do cliente, selecione Novo segredo do cliente.
  13. Escreva uma descrição da chave (por exemplo, segredo da aplicação), deixe a expiração predefinida e selecione Adicionar.
  14. Anote o Valor do Segredo do Cliente para utilização posterior.
  15. Em Gerir, selecione Permissões> de APIAdicionar uma permissão.
  16. Certifique-se de que o separador APIs da Microsoft está selecionado.
  17. Na secção APIs da Microsoft mais utilizadas , selecione Microsoft Graph.
  18. Na secção Permissões delegadas , certifique-se de que as permissões certas estão selecionadas: User.ReadBasic.All. Utilize a caixa de pesquisa, se necessário.
  19. Selecione o botão Adicionar permissões .

Passo 2: Transferir o projeto

Transferir o Exemplo de Código

Passo 3: Configurar a Aplicação

  1. Extraia o ficheiro zip para uma pasta local próxima da pasta raiz, por exemplo, C:\Azure-Samples
  2. Se utilizar um ambiente de desenvolvimento integrado, abra o exemplo no seu IDE favorito (opcional).
  3. Abra o ficheiro app_config.py , que pode ser encontrado na pasta raiz e substitua pelo seguinte fragmento de código:
CLIENT_ID = "Enter_the_Application_Id_here"
CLIENT_SECRET = "Enter_the_Client_Secret_Here"
AUTHORITY = "https://login.microsoftonline.com/Enter_the_Tenant_Name_Here"

Em que:

  • Enter_the_Application_Id_here - é o ID da Aplicação da aplicação que registou.
  • Enter_the_Client_Secret_Here- é o Segredo do Cliente que criou em Segredos de Certificados & para a aplicação que registou.
  • Enter_the_Tenant_Name_Here - é o valor de ID do Diretório (inquilino) da aplicação que registou.

Passo 4: executar o exemplo de código

  1. Terá de instalar a biblioteca MSAL Python, o Flask Framework Flask-Sessions para a gestão de sessões do lado do servidor e os pedidos com o pip da seguinte forma:

    pip install -r requirements.txt
    
  2. Execute app.py a partir da shell ou da linha de comandos:

    python app.py
    

    Importante

    Esta aplicação de início rápido utiliza um segredo do cliente para se identificar como cliente confidencial. Uma vez que o segredo do cliente é adicionado como um texto simples aos ficheiros do projeto, por motivos de segurança, recomenda-se que utilize um certificado em vez de um segredo do cliente antes de considerar a aplicação como aplicação de produção. Para obter mais informações sobre como utilizar um certificado, veja estas instruções.

Mais informações

Como funciona o exemplo

Mostra como funciona a aplicação de exemplo gerada por este início rápido

Obter MSAL

MSAL é a biblioteca utilizada para iniciar sessão de utilizadores e pedir tokens utilizados para aceder a uma API protegida pela Plataforma de identidades da Microsoft. Pode adicionar o MSAL Python à sua aplicação com o Pip.

pip install msal

Inicialização da MSAL

Pode adicionar a referência ao MSAL Python ao adicionar o seguinte código à parte superior do ficheiro onde irá utilizar o MSAL:

import msal

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.

Passos seguintes

Saiba mais sobre as aplicações Web que iniciam sessão de utilizadores na nossa série de cenários multi-partes.