#c# #azure-active-directory #msal
#c# #azure-active-directory #msal
Вопрос:
Просматривая веб-страницы, я вижу, что если сайт использует MSAL.js, разработчик сайта может предоставить подсказки домена, чтобы, когда пользователь начинает входить в систему, ему не предлагалось «Выбрать учетную запись» на сайте входа Microsoft, а вместо этого библиотека выбирала для них учетную запись, обеспечивая лучший единый вход. Есть ли какой-либо способ предоставить подсказку домена (или иным образом избежать необходимости запроса «выбрать учетную запись») при использовании MSAL.NET в приложении C #?
Я использую MSAL.NET для аутентификации в Azure AD через Open ID Connect.
Ответ №1:
Нашел это. В ConfigureServices(IServiceCollection)
добавьте обработчик событий для OnRedirectToIdentityProvider.
var events = new OpenIdConnectEvents()
{
OnRedirectToIdentityProvider = context =>
{
context.ProtocolMessage.DomainHint = "mydomain.com";
return Task.CompletedTask;
},
}
services.Configure<OpenIdConnectOptions>(
AzureADDefaults.OpenIdScheme,
options =>
{
// ...
options.Events = events;
}
);
Комментарии:
1. AzureADDefaults теперь устарел. Ищете новый способ сделать это, если у вас есть какие-либо идеи!
Ответ №2:
Используйте параметры withextraqueryparameters для передачи login_hint и domain_hint
IPublicClientApplication app = PublicClientApplicationBuilder.Create(appConfiguration.ClientId)
.WithAuthority(authority)
.WithRedirectUri(appConfiguration.RedirectUri)
.WithExtraQueryParameters("login_hint=myusername@mydomain.com")
.Build();
Комментарии:
1. У меня нигде нет этого конструктора. В моем ASP.NET приложение, которое у меня есть,
var builder = WebApplication.CreateBuilder(args);
и позже я вызываюbuilder.Services.AddMsalAuthentication(...).
, ничего подобного выше. У вас есть еще какие-либо сведения о том, как я мог бы это использовать?