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
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Visual Studio 2019
- .NET Framework 4.7.2+
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:
- Aceda à página portal do Azure do registo de aplicações.
- Introduza um nome para a sua aplicação e xelecione Registar.
- 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
- Inicie sessão no Portal do Azure.
- 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.
- Procure e selecione Azure Active Directory.
- Em Gerir, selecione Registos de aplicações>Novo registo.
- 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.
- Defina o tipo de URI de Redirecionamento como Web e valor como
https://localhost:44368/
. - Selecione Registar.
- Em Gerir, selecione Autenticação.
- Na secção Concessão implícita e fluxos híbridos , selecione Tokens de ID.
- 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
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.
Abra a solução no Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
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.
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
.EditeWeb.config e substitua os parâmetros
ClientId
,Tenant
eredirectUri
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
.
- 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,
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
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
- Inicie sessão no Portal do Azure.
- 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.
- Procure e selecione Azure Active Directory.
- Em Gerir, selecione Registos de aplicações>Novo registo.
- 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.
- Defina o tipo de URI de Redirecionamento como Web e o valor como
https://localhost:44321/signin-oidc
. - Selecione Registar.
- Em Gerir, selecione Autenticação.
- Para o URL de fim de sessão do canal frontal, introduza https://localhost:44321/signout-oidc.
- Em Concessão implícita e fluxos híbridos, selecione Tokens de ID.
- Selecione Guardar.
- Em Gerir, selecione Segredos de certificados Segredos &>>docliente Novo segredo do cliente.
- Introduza uma Descrição, por exemplo
clientsecret1
. - Selecione Em 1 ano para a expiração do segredo.
- 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
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.
Abra a solução no editor de código escolhido.
Em appsettings.json, substitua os valores de
ClientId
eTenantId
. 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
.
- 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,
- 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:
Abrir WebApp-OpenIDConnect-DotNet.csproj
Remova a seguinte linha:
<TargetFramework>netcoreapp3.1</TargetFramework>
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.
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.
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
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
- Uma subscrição do Azure. Crie uma subscrição do Azure gratuitamente.
- Node.js
- Visual Studio Code ou outro editor de código
Registar e transferir a sua aplicação de início rápido
Passo 1: Registar a aplicação
- Inicie sessão no Portal do Azure.
- 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.
- Em Gerir, selecione Registos de aplicações>Novo registo.
- 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.
- Em Tipos de conta suportados, selecione Contas apenas neste diretório organizacional.
- Defina o tipo de URI de Redirecionamento como Web e valor como
http://localhost:3000/auth/redirect
. - Selecione Registar.
- 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.
- 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.
- 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.
Para iniciar o servidor, execute os seguintes comandos a partir do diretório do projeto:
cd App npm install npm start
Aceda a
http://localhost:3000/
.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
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Node.js.
Registar a aplicação
Inicie sessão no portal do Azure.
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.
Procure e selecione Azure Active Directory.
Em Gerir, selecione Registos de aplicações>Novo registo.
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.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.
Selecione Registar para criar a aplicação.
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.
Em Gerir, selecione Autenticação.
Selecione Adicionar uma Web de plataforma>.
Na secção URIs de Redirecionamento , introduza
http://localhost:3000/auth/openid/return
.Introduza um URL
https://localhost:3000
de início de sessão do canal frontal.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.
Selecione Configurar.
Em Gerir, selecione Segredos de certificados Segredos &>docliente Novo segredo do cliente.>
Introduza uma descrição da chave (por exemplo, segredo da aplicação).
Selecione uma duração chave de 1 ano, Em 2 anos ou Nunca Expira.
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 umpost_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:
- Java Development Kit (JDK) 8 ou posterior.
- Maven.
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
- Aceda à experiência de início rápido portal do Azure - Registos de aplicações.
- Introduza um nome para a sua aplicação e, em seguida, selecione Registar.
- 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:
- Inicie sessão no Portal do Azure.
- 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.
- Procure e selecione Azure Active Directory.
- Em Gerir, selecione Registos de aplicações.
- Selecione Novo registo.
- 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.
- Selecione Registar.
- 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.
- Em Gerir, selecione Autenticação.
- Selecione Adicionar uma Web de plataforma>.
- Na secção URIs de Redirecionamento , introduza
https://localhost:8443/msal4jsample/secure/aad
. - Selecione Configurar.
- Na secção Web, em URIs de Redirecionamento, introduza
https://localhost:8443/msal4jsample/graph/me
como um segundo URI de redirecionamento. - Em Gerir, selecione Segredos de certificados&. Na secção Segredos do cliente, selecione Novo segredo do cliente.
- Introduza uma descrição da chave (por exemplo, segredo da aplicação), deixe a expiração predefinida e selecione Adicionar.
- 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
Extraia o ficheiro zip para uma pasta local.
Opcional. Se utilizar um ambiente de desenvolvimento integrado, abra o exemplo nesse ambiente.
Abra o ficheiro application.properties . Pode encontrá-lo na pasta src/main/resources/ . Substitua os valores nos campos
aad.clientId
,aad.authority
eaad.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.
- 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
- 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.
Na primeira página, selecione o botão Iniciar sessão para redirecionar os utilizadores para o Azure Active Directory e pedir-lhes credenciais.
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.
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); } }
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"/>
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.
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
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
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Python 2.7 ouPython 3+
- Flask, Flask-Session, pedidos
- MSAL Python
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
- Aceda à experiência de início rápido portal do Azure - Registos de aplicações.
- Introduza um nome para a sua aplicação e xelecione Registar.
- 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:
- Inicie sessão no portal do Azure.
- 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.
- Em Gerir, selecione Registos de aplicações>Novo registo.
- 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. - Em Tipos de conta suportados, selecione Contas em qualquer diretório organizacional e contas Microsoft pessoais.
- Selecione Registar.
- 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.
- Em Gerir, selecione Autenticação.
- Selecione Adicionar uma Web de plataforma>.
- Adicione
http://localhost:5000/getAToken
como URIs de Redirecionamento. - Selecione Configurar.
- Em Gerir, selecione os segredos dos Certificados e, na secção Segredos & do cliente, selecione Novo segredo do cliente.
- Escreva uma descrição da chave (por exemplo, segredo da aplicação), deixe a expiração predefinida e selecione Adicionar.
- Anote o Valor do Segredo do Cliente para utilização posterior.
- Em Gerir, selecione Permissões> de APIAdicionar uma permissão.
- Certifique-se de que o separador APIs da Microsoft está selecionado.
- Na secção APIs da Microsoft mais utilizadas , selecione Microsoft Graph.
- 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.
- Selecione o botão Adicionar permissões .
Passo 2: Transferir o projeto
Transferir o Exemplo de Código
Passo 3: Configurar a Aplicação
- Extraia o ficheiro zip para uma pasta local próxima da pasta raiz, por exemplo, C:\Azure-Samples
- Se utilizar um ambiente de desenvolvimento integrado, abra o exemplo no seu IDE favorito (opcional).
- 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
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
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
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.