Как изменить обратный вызов по умолчанию для входа в систему провайдера аутентификации Microsoft? - PullRequest
0 голосов
/ 27 декабря 2018

В моем приложении ASP.Net Core я реализовал Microsoft External Login.Теперь я хочу переопределить обратный вызов по умолчанию для входа в систему, который указан в документации как https://localhost:5001/signin-microsoft, если, конечно, он работает на localhost и на этом порту.Инструкции на здесь затем утверждают, что переопределение обратного вызова будет примерно таким: https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback.

Я немного запутался в том, где должен быть реализован обратный вызов.В настоящий момент у меня реализован метод обратного вызова ExternalLoginCallback() в базовом классе Controller.Но, глядя на приведенный выше пример, не похоже, что он должен быть частью контроллера.

Должен ли быть обратный вызов внутри Startup.cs, контроллера или какого-либо другого файла, о котором я не знаю в данный момент?

1 Ответ

0 голосов
/ 27 декабря 2018

В приведенных здесь инструкциях говорится, что переопределение обратного вызова будет выглядеть примерно так: https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback.

Это связано со встроеннымподдержка аутентификации и авторизации в службе приложений Azure.Размещаете ли вы свое приложение в службе приложений Azure?

Если да:

Если вы включили функцию Authentication and authorization службы приложения, это означает, что вы используете встроенную поддержку аутентификации и авторизации в Лазурном.Эта функция примет на себя аутентификацию и авторизацию вашего приложения, это означает, что аутентификация и авторизация по-прежнему работают, даже если вы удалите внешние коды аутентификации Azure AD в своем приложении.Тогда вы можете просто:

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

  2. ОтключитьAuthentication and authorization функция службы приложения, используйте Внешний вход в учетную запись Microsoft (пакет Microsoft.AspNetCore.Authentication.MicrosoftAccount).

Если нет:

Затем вы должны следовать документу: Внешний логин учетной записи Microsoft .Вы можете настроить URL обратного вызова следующим образом:

microsoftOptions.CallbackPath = "/home/about";

Но если вы используете шаблон удостоверения ASP.NET с внешним входом в учетную запись Microsoft.После проверки подлинности Microsoft asp.net проверит, существует ли личность пользователя в базе данных.Начиная с ASP.NET Core 2.1 и более поздних версий, обеспечивает идентификацию ядра ASP.NET в качестве библиотеки классов Razor.Если вы хотите перенаправить пользователя на другую страницу после аутентификации, вы можете:

  1. Идентификация лесов в проектах ASP.NET Core: 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);
    }
    
...