如何更改Microsoft身份验证提供程序登录的默认回调



在我的ASP.Net Core应用程序中,我实现了Microsoft外部登录。我现在希望覆盖默认的登录回调,文档中列出的默认登录回调为https://localhost:5001/signin-microsoft,如果它当然在本地主机和该端口上运行的话。这里的说明说明回调覆盖如下:https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback

我对回调应该在哪里实现有点困惑。目前,我已经在Controller基类中实现了ExternalLoginCallback()回调方法。但从上面的例子来看,它看起来不应该是控制器的一部分。

回调应该在Startup.cs、控制器或我目前不知道的其他文件中吗?

此处的说明说明指出回调覆盖如下:https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback.

这与Azure应用程序服务中的内置身份验证和授权支持有关。你是否在Azure应用程序服务中托管你的应用程序?

如果是:

如果您启用应用程序服务的Authentication and authorization功能,则意味着您正在使用Azure中内置的身份验证和授权支持。该功能将接管你的应用程序的身份验证和授权,这意味着即使你删除了应用程序中的外部Azure AD身份验证代码,身份验证和权限仍然有效。然后你可以:

  1. 使用应用程序服务的Authentication and authorization功能,删除Owin Microsoft帐户验证中间件相关代码。

  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及更高版本提供了作为Razor类库的ASP.NET Core Identity。如果您想在身份验证后将用户重定向到另一个页面,您可以:

  1. ASP.NET核心项目中的脚手架标识:https://learn.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.2&tabs=visual studio

  2. 之后,在Areas.Identity.Pages.Account.Login.cshtml.cs:中修改重定向url

    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);
    }
    

相关内容

  • 没有找到相关文章

最新更新