Как изменить обратный вызов по умолчанию для входа в систему провайдера аутентификации 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 в своем приложении. Тогда вы могли бы просто:

  1. использование Authentication and authorizationособенность службы приложений, удаление кодов, связанных с промежуточным ПО аутентификации учетной записи Microsoft Owin.

  2. запрещать 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. Если вы хотите перенаправить пользователя на другую страницу после аутентификации, вы можете:

  1. Идентификация скаффолдов в основных проектах ASP.NET: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.2&tabs=visual-studio

  2. После этого измените 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);
    }
    
Другие вопросы по тегам