Я использую сетевое ядро, у меня есть система входа в систему с Microsoft.AspNetCore.Identity, и мне нужно добавить Azure Active Directory, но я не могу ее правильно подключить.
У меня есть этот код в моем ConfigureServices()
:
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(40);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.SameSite = SameSiteMode.Lax;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options =>
{
var azureADSettingService = services.BuildServiceProvider().GetService<IAzureADSettingService>();
var azure = azureADSettingService.GetBySubDomain(Subdomain);
options.ClientId = azure.ClientId;
options.ClientSecret = azure.ClientSecret;
options.TenantId = azure.TenantId;
options.Instance = azure.Instance;
options.Domain = azure.Domain;
options.CallbackPath = azure.CallbackPath;
});
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.Lax;
options.HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None;
options.Secure = CookieSecurePolicy.Always;
options.ConsentCookie.IsEssential = true;
});
И в моем Configure()
методе:
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
В моем AccountController
:
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login(Uri returnUrl = null)
{
var redirectUrl = Url.Action("SigningMicrosoft", "Account", values: null, protocol: Request.Scheme);
return Challenge(
new AuthenticationProperties { RedirectUri = redirectUrl }, AzureADDefaults.AuthenticationScheme);
}
В настоящее время экран продолжает загружаться при входе в систему Microsoft и не дает авторизации на сайт.
У меня есть система входа в систему с Microsoft.AspNetCore.Identity, и мне нужно добавить Azure Active Directory
Использование Microsoft.AspNetCore.Identity
означает, что теперь вы используете основное удостоверение asp.net по умолчанию, а у Microsoft есть встроенная функция для интеграции аутентификации Azure AD с удостоверением по умолчанию. У нас есть учебник здесь. Он показал нам, как интегрировать внешнего поставщика аутентификации, такого как Google/Facebook... включая Azure AD. И мы должны знать, что после добавления внешнего поставщика аутентификации в одном приложении будет как минимум два типа учетных записей, возможно, у одного пользователя будет две учетные записи, обе принадлежащие ему, поэтому мы должны убедиться, что эти две учетные записи имеют сопоставление, поэтому что приложение должно знать, что [email protected]
и [email protected]
представляют одного и того же пользователя. И это уже осознается библиотекой.
Ниже приведен краткий обзор интеграции AAD в приложение. Прежде всего, я создал новый проект asp.net core 3.1 mvc и выбрал индивидуальную учетную запись в качестве типа аутентификации в VS 2022. У меня может быть страница входа, как показано ниже. Как вы видите, он уже подготовил схему для разрешения внешнего поставщика аутентификации.
Затем нам необходимо установить Microsoft.AspNetCore.Authentication.MicrosoftAccount
версию, которая должна соответствовать .net core 3.1, и добавить коды ниже в метод Startup.cs -> ConfigurationService.
services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = "aad_client_id";
microsoftOptions.ClientSecret = "client_secret";
});
Затем мы сможем войти в систему с учетной записью Microsoft, мы увидим кнопку, как на снимке экрана ниже.
У нас есть официальный документ, демонстрирующий, как войти в систему с использованием внешней учетной записи вместе с уже имеющимся у нас идентификатором по умолчанию. Это позволит вам войти в систему с учетной записью Microsoft, а затем ваше приложение создаст соответствующую учетную запись в вашей базе данных, которая сопоставляет учетную запись Microsoft.