Как изменить обратный вызов по умолчанию для входа в систему провайдера аутентификации Microsoft?
В моем приложении ASP.Net Core я реализовал Microsoft External Login. Теперь я хочу переопределить обратный вызов по умолчанию для входа в систему, который указан в документации для https://localhost:5001/signin-microsoft
, если, конечно, работает на локальном хосте и на этом порту. Инструкции здесь утверждают, что переопределение обратного вызова будет примерно таким: https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback
,
Я немного запутался в том, где должен быть реализован обратный вызов. На данный момент у меня есть ExternalLoginCallback()
метод обратного вызова, реализованный в базовом классе Controller. Но, глядя на приведенный выше пример, не похоже, что он должен быть частью контроллера.
Должен ли быть обратный вызов внутри Startup.cs
, контроллер или какой-то другой файл, о котором я не знаю в настоящее время?
1 ответ
В приведенных здесь инструкциях указано, что переопределение обратного вызова будет выглядеть примерно так: https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback.
Это связано со встроенной поддержкой аутентификации и авторизации в службе приложений Azure. Размещаете ли вы свое приложение в службе приложений Azure?
Если да:
Если вы включите Authentication and authorization
особенность службы приложений, которая означает, что вы используете встроенную поддержку аутентификации и авторизации в Azure. Эта функция примет на себя аутентификацию и авторизацию вашего приложения, это означает, что аутентификация и авторизация по-прежнему работают, даже если вы удалите внешние коды аутентификации Azure AD в своем приложении. Тогда вы могли бы просто:
использование
Authentication and authorization
особенность службы приложений, удаление кодов, связанных с промежуточным ПО аутентификации учетной записи Microsoft Owin.запрещать
Authentication and authorization
Особенностью службы приложения является использование внешнего входа в учетную запись Microsoft (пакет Microsoft.AspNetCore.Authentication.Microsoft Account) .
Если нет:
Затем вы должны следовать документу: внешний аккаунт Microsoft Account. Вы можете настроить URL обратного вызова:
microsoftOptions.CallbackPath = "/home/about";
Но если вы используете шаблон удостоверения ASP.NET с внешней учетной записью Microsoft. После проверки подлинности Microsoft asp.net проверит, существует ли личность пользователя в базе данных. Начиная с ASP.NET Core 2.1 и более поздних версий, обеспечивает идентификацию ядра ASP.NET в качестве библиотеки классов Razor. Если вы хотите перенаправить пользователя на другую страницу после аутентификации, вы можете:
Идентификация скаффолдов в основных проектах ASP.NET: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.2&tabs=visual-studio
После этого измените URL перенаправления в
Areas.Identity.Pages.Account.Login.cshtml.cs
:public IActionResult OnPost(string provider, string returnUrl = null) { returnUrl = "/home/contact"; // Request a redirect to the external login provider. var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl }); var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); return new ChallengeResult(provider, properties); }