Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais nas nossas Perguntas Frequentes.
Este artigo descreve maneiras de personalizar e aprimorar a experiência de autenticação do Azure Ative Directory B2C (Azure AD B2C) para seu aplicativo de área de trabalho Windows Presentation Foundation (WPF).
Antes de começar, familiarize-se com o artigo Configurar autenticação em um aplicativo de área de trabalho WPF de exemplo usando o Azure AD B2C .
Preencher automaticamente o nome de início de sessão
Durante um processo de login, o seu aplicativo pode destinar-se a um utilizador específico. Quando um aplicativo tem como alvo um usuário, ele pode especificar na solicitação de autorização o login_hint parâmetro de consulta com o nome de entrada do usuário. O Azure AD B2C preenche automaticamente o nome de entrada e o usuário precisa fornecer apenas a senha.
Para preencher previamente o nome de utilizador, faça o seguinte:
- Se você estiver usando uma política personalizada, adicione a declaração de entrada necessária, conforme descrito em Configurar entrada direta.
- Procure o objeto de configuração Microsoft Authentication Library (MSAL) e adicione o método
withLoginHint()com a dica de início de sessão.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithLoginHint("bob@contoso.com")
.ExecuteAsync();
Pré-selecionar um provedor de identidade
Se você configurou a jornada de entrada para seu aplicativo para incluir contas sociais, como Facebook, LinkedIn ou Google, você pode especificar o domain_hint parâmetro. Este parâmetro de consulta fornece uma dica para o Azure AD B2C sobre o provedor de identidade social que deve ser usado para entrar. Por exemplo, se o aplicativo especificar domain_hint=facebook.com, o fluxo de entrada vai diretamente para a página de entrada do Facebook.
Para redirecionar os usuários para um provedor de identidade externo, faça o seguinte:
- Verifique o nome de domínio do seu provedor de identidade externo. Para obter mais informações, consulte Redirecionar o login para um provedor social.
- Crie ou use um objeto existente
Dictionarypara armazenar parâmetros de consulta extras. - Adicione o
domain_hintparâmetro com o nome de domínio correspondente ao dicionário (por exemplo,facebook.com). - Passe o objeto de parâmetros de consulta extra para o método do
WithExtraQueryParametersobjeto de configuração MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Especificar o idioma da interface do usuário
A personalização de idioma no Azure AD B2C permite que seu fluxo de usuário acomode uma variedade de idiomas para atender às necessidades de seus clientes. Para obter mais informações, consulte Personalização de idioma.
Para definir o idioma preferido, faça o seguinte:
- Configure a personalização do idioma.
- Crie ou use um objeto existente
Dictionarypara armazenar parâmetros de consulta extras. - Adicione o
ui_localesparâmetro com o código de idioma correspondente ao dicionário (por exemplo,en-us). - Passe o objeto de parâmetros de consulta extra para o método do
WithExtraQueryParametersobjeto de configuração MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Passar um parâmetro de cadeia de caracteres de consulta personalizado
Com políticas personalizadas, você pode passar um parâmetro de cadeia de caracteres de consulta personalizado. Um bom exemplo de caso de uso é quando você deseja alterar dinamicamente o conteúdo da página.
Para passar um parâmetro de cadeia de caracteres de consulta personalizado, faça o seguinte:
- Configure o elemento ContentDefinitionParameters .
- Crie ou use um objeto existente
Dictionarypara armazenar parâmetros de consulta extras. - Adicione o parâmetro de cadeia de caracteres de consulta personalizado, como
campaignId. Defina o valor do parâmetro (por exemplo,germany-promotion). - Passe o objeto de parâmetros de consulta extra para o método do
WithExtraQueryParametersobjeto de configuração MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Fornecer uma sugestão de token de ID
Um aplicativo de terceira parte confiável pode enviar um JSON Web Token (JWT) de entrada como parte da solicitação de autorização OAuth2. O token de entrada é uma dica sobre o usuário ou a solicitação de autorização. O Azure AD B2C valida o token e, em seguida, extrai a declaração.
Para incluir uma dica de token de ID na solicitação de autenticação, faça o seguinte:
- Em sua política personalizada, defina um perfil técnico de dica de token de ID.
- No seu código, gere ou adquira um token de ID e, em seguida, defina o token como uma variável (por exemplo,
idToken). - Crie ou use um objeto existente
Dictionarypara armazenar parâmetros de consulta extras. - Adicione o
id_token_hintparâmetro com a variável correspondente que armazena o token de ID. - Passe o objeto de parâmetros de consulta extra para o atributo do objeto de
extraQueryParametersconfiguração MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Configurar registo de logs
A biblioteca MSAL gera mensagens de log que podem ajudar a diagnosticar problemas. O aplicativo pode configurar o registro. O aplicativo também pode fornecer controle personalizado sobre o nível de detalhe e se os dados pessoais e organizacionais são registrados.
Recomendamos que se crie uma função de retorno de registo MSAL e disponibilize uma forma para os utilizadores enviarem registos quando enfrentarem problemas de autenticação. O MSAL fornece estes níveis de detalhes de registro:
- Erro: Algo correu mal e foi gerado um erro. Este nível é usado para depurar e identificar problemas.
- Aviso: Não houve necessariamente um erro ou falha, mas as informações destinam-se a diagnósticos e identificação de problemas.
- Info: O MSAL registra eventos destinados a fins informativos e não necessariamente para depuração.
- Verbose: Este é o nível padrão. O MSAL registra todos os detalhes do comportamento da biblioteca.
Por padrão, o registrador MSAL não captura dados pessoais ou organizacionais. A biblioteca oferece a opção de habilitar o registro de dados pessoais e organizacionais se você decidir fazê-lo.
O trecho de código a seguir demonstra como configurar o log MSAL:
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithB2CAuthority(AuthoritySignUpSignIn)
.WithRedirectUri(RedirectUri)
.WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
.Build();
Configurar o URI de redirecionamento
Durante o processo de registro do aplicativo da área de trabalho , ao escolher um URI de redirecionamento, lembre-se das seguintes considerações importantes:
-
Desenvolvimento: para uso de desenvolvimento em aplicativos de área de trabalho, você pode definir o URI de redirecionamento como
http://localhost, e o Azure AD B2C respeitará qualquer porta na solicitação. Se o URI registrado contiver uma porta, o Azure AD B2C usará somente essa porta. Por exemplo, se o URI de redirecionamento registrado forhttp://localhost, o URI de redirecionamento na solicitação poderá serhttp://localhost:<randomport>. Se o URI de redirecionamento registrado forhttp://localhost:8080, o URI de redirecionamento na solicitação deverá serhttp://localhost:8080. -
Exclusivo: O esquema do URI de redirecionamento deve ser exclusivo para cada aplicativo. No exemplo
com.onmicrosoft.contosob2c.exampleapp://oauth/redirect,com.onmicrosoft.contosob2c.exampleappé o esquema. Este padrão deve ser seguido. Se duas aplicações partilharem o mesmo esquema, os utilizadores podem escolher entre aplicações. Se os usuários escolherem incorretamente, o login falhará. -
Completo: O URI de redirecionamento deve ter um esquema e um caminho. O caminho deve conter pelo menos um caractere de barra após o domínio. Por exemplo,
//oauth/funciona e//oauthfalha. Não inclua caracteres especiais no URI. Por exemplo, o caractere de sublinhado (_) não é permitido.
Próximos passos
- Para saber mais, consulte MSAL para .NET, UWP e opções de configuração NetCore.