Guia de início rápido: entre usuários e chame a API do Microsoft Graph a partir de um aplicativo Web ASP.NET
Neste início rápido, você baixa e executa um exemplo de código que demonstra um aplicativo Web ASP.NET que pode entrar em usuários com contas do Microsoft Entra.
Consulte Como funciona o exemplo para obter uma ilustração.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Visual Studio 2022
- .NET Framework 4.7.2+
Registe-se e descarregue a aplicação
Gorjeta
As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.
Você tem duas opções para começar a criar seu aplicativo: configuração automática ou manual.
Configuração automática
Se você quiser configurar automaticamente seu aplicativo e, em seguida, baixar o exemplo de código, siga estas etapas:
- Entre na experiência de início rápido do centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos na Nuvem.
- Introduza um nome para a sua aplicação e xelecione Registar.
- Siga as instruções para baixar e configurar automaticamente seu novo aplicativo em um clique.
Configuração manual
Se você quiser configurar manualmente seu aplicativo e exemplo de código, use os procedimentos a seguir.
Passo 1: Registar a aplicação
- Entre no centro de administração do Microsoft Entra como pelo menos um administrador de aplicativos na nuvem.
- Se você tiver acesso a vários locatários, use o ícone Configurações no menu superior para alternar para o locatário no qual deseja registrar o aplicativo no menu Diretórios + assinaturas.
- Navegue até Registros de aplicativos de identidade>>e selecione Novo registro.
- Em Nome, insira um nome para seu aplicativo. Por exemplo, digite ASPNET-Quickstart. Os usuários do seu aplicativo verão esse nome e você poderá alterá-lo mais tarde.
- Defina o tipo de URI de redirecionamento como Web e o valor como
https://localhost:44368/
. - Selecione Registar.
- Em Gerir, selecione Autenticação.
- Na seção Concessão implícita e fluxos híbridos, selecione Tokens de ID.
- Selecione Guardar.
Passo 2: Transferir o projeto
Baixe o exemplo de código ASP.NET
Gorjeta
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: Executar o projeto
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.
Abra a solução no Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
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.
Abra o Console do Gerenciador de Pacotes selecionando Exibir>Outro Console do Gerenciador de Pacotes do Windows.> Em seguida, execute o
Update-Package
.Edite appsettings.json e substitua os parâmetros
ClientId
,Tenant
eredirectUri
com:"ClientId" :"Enter_the_Application_Id_here" /> "TenantId": "Enter_the_Tenant_Info_Here" /> "RedirectUri" :"https://localhost:44368/" />
Nesse código:
Enter_the_Application_Id_here
é a ID do aplicativo (cliente) do registro do aplicativo que você criou anteriormente. Encontre o ID do aplicativo (cliente) na página Visão geral do aplicativo em Registros de aplicativos no centro de administração do Microsoft Entra.Enter_the_Tenant_Info_Here
é uma das seguintes opções:- Se o seu aplicativo oferecer suporte somente a Minha organização, substitua esse valor pelo ID do diretório (locatário) ou nome do locatário (por exemplo,
contoso.onmicrosoft.com
). Encontre o ID do diretório (locatário) na página Visão geral do aplicativo em Registros de aplicativos no centro de administração do Microsoft Entra. - Se o seu aplicativo oferecer suporte a Contas em qualquer diretório organizacional, substitua esse valor por
organizations
. - Se a sua aplicação suportar Todos os utilizadores da conta Microsoft, substitua este valor por
common
.
- Se o seu aplicativo oferecer suporte somente a Minha organização, substitua esse valor pelo ID do diretório (locatário) ou nome do locatário (por exemplo,
redirectUri
é o URI de redirecionamento que você inseriu anteriormente em Registros de aplicativos no centro de administração do Microsoft Entra.
Mais informações
Esta seção fornece uma visão geral do código necessário para entrar usuários. 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
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.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies
Classe de inicialização OWIN
O middleware OWIN usa uma classe de inicialização que é executada quando o processo de hospedagem é iniciado. 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());
OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();
app.AddMicrosoftIdentityWebApp(factory);
factory.Services
.Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
.AddMicrosoftGraph()
.AddInMemoryTokenCaches();
factory.Build();
}
Onde | Description |
---|---|
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 o usuário autenticar. 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 uma referência ao ponto de extremidade comum. (O ponto de extremidade comum é usado para aplicativos 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 usuários são enviados após a assinatura. |
Scope |
A lista de escopos que estão sendo solicitados, separados por espaços. |
ResponseType |
A solicitação de 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. Nesse caso, ValidateIssuer é definido para false indicar que ele pode aceitar logins de qualquer tipo de conta pessoal, profissional ou de estudante. |
Notifications |
Uma lista de delegados que podem ser executados em OpenIdConnect mensagens. |
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);
}
}
Gorjeta
Solicitar um desafio de autenticação usando esse método é opcional. Normalmente, você o usa quando quiser que um modo de exibição seja acessível por usuários 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 ações de um controlador
Você pode proteger um controlador ou ações do controlador usando o [Authorize]
atributo. 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 [Authorize]
atributo.
Chame o Microsoft Graph a partir do controlador
Você pode chamar o Microsoft Graph do controlador obtendo a instância de GraphServiceClient usando o GetGraphServiceClient
método de extensão no controlador, como no código a seguir:
try
{
var me = await this.GetGraphServiceClient().Me.GetAsync();
ViewBag.Username = me.DisplayName;
}
catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
{
HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
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.
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.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários