Я начал настраивать шаблон ASP.Net Core MVC / JQuery, и теперь я хотел бы заменить существующую аутентификацию аутентификацией по Azure AD. Я видел различные документы, описывающие, как использовать OpenID Connect в простом приложении ASP.Net Core MVC.
Я сталкиваюсь с тем, как использовать его в качестве метода проверки подлинности по умолчанию (только) для шаблона ASP.Net Boilerplate.
В мой шаблон я решил включить страницы входа и управления пользователями.
Должен ли я исключить их? Если нет, как я могу переопределить их? Должен ли я реализовать свой собственный LoginManager (который, я думаю, был предложен ответ здесь )?
Должен ли я использовать и регистрировать внешний механизм аутентификации?
На старом форуме ASP.Net Boilerplate я вижу, что кто-то предлагал поделиться кодом ASP.Net Zero, связанным с этим ( здесь ). Я был бы признателен, если бы кто-то в Volosoft мог сделать это.
спасибо.
EDIT
Я добился определенного прогресса в этом.
Я добавил регистрацию приложения в Azure с URL-адресом ответа, указывающим на метод externallogincallback.
Я изменил метод входа в AccountController, чтобы сделать это:
return ExternalLogin("OpenIdConnect", "");
Я изменил метод ExternalLogin следующим образом:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
var redirectUrl = Url.Action(
"ExternalLoginCallback",
"Account",
new
{
ReturnUrl = returnUrl
});
return Challenge(
new AuthenticationProperties
{
Items = { { "LoginProvider", provider } },
RedirectUri = redirectUrl
},
// OpenIdConnectDefaults.AuthenticationScheme
provider
);
}
Теперь происходит проверка подлинности приложения в Azure AD и перенаправление на метод ExternalLoginCallback.
При звонке
var loginResult = await _logInManager.LoginAsync(externalLoginInfo, tenancyName);
результат
case AbpLoginResultType.UnknownExternalLogin:
return await RegisterForExternalLogin(externalLoginInfo);
, поэтому приложение регистрирует пользователя, используя внешние данные для входа.
Однако при повторной аутентификации происходит точно такой же поток, т.е. метод LoginAsync возвращает UnknownExternalLogin, поэтому пользователь снова регистрируется.
Мой вопрос: что могло бы вызвать это?