c# - IdentityServer4 直接链接到 Facebook 身份验证

标签 c# asp.net-core identityserver4

我有一个与 Facebook 集成的 IdentityServer4 应用程序,这工作正常。

我还有一个使用 IdentityServer 的 Angular2 应用程序。目前,如果用户想通过 Facebook 登录,他们必须单击“登录”,这会将他们带到 IdentityServer,然后单击 Facebook 按钮。

我想在我的 Angular 应用程序上有一个“Facebook”按钮,然后它会自动将它们直接重定向到 Facebook,绕过主登录屏幕。

我注意到以下代码行:

public async Task<IActionResult> Login(string returnUrl)
{
    ...
    if (vm.IsExternalLoginOnly)
    {
        // only one option for logging in
        return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
    }
    ...
}

这基本上就是我想要的,自动重定向到 Facebook。所以我添加了以下方法:
public async Task<IActionResult> FacebookLogin(string returnUrl)
{
    var vm = await _account.BuildLoginViewModelAsync(returnUrl);

    // only one option for logging in
    return ExternalLogin(vm.ExternalProviders.First(x => x.DisplayName.ToUpper() == "FACEBOOK").AuthenticationScheme, returnUrl);
}

虽然这会直接重定向到 Facebook 并进行身份验证,但它不会重定向回调用应用程序。我可以看到关于无效 redirectUri 的错误记录,我认为这是因为我没有调用 connect/authorize ?

那么有没有办法将附加参数传递给 connect/authorize指定使用 Facebook 然后我可以在我的 Controller 中使用,或者调用不同的方法?

谢谢

最佳答案

在 OIDC 规范中已经有一个规定来做到这一点,IdentityServer4 确实支持。

包括 acr_values Angular2 oidc-client 配置中的参数。像这样的值应该告诉身份服务器将您的请求转发到身份提供者:“idp:oidc-facebook”。当然,该 IdP 需要向您的 IdentityServer 实例注册。

关于c# - IdentityServer4 直接链接到 Facebook 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152961/

相关文章:

c# - 确定解决实例的依赖关系 - IoC (autofac)

c# - 将 excel 文件从 MVC 5 Controller 流式传输到浏览器

c# - 如何替换已弃用的 csc ant 任务

c# - 如何将 Startup.cs 合并到 Program.cs

asp.net-core - .NET Core 上的 X509Certificate2.CreateFromCertFile()

angular - 在 oidc-client 中验证状态和随机数

c# - WCF 服务(NetTcpBinding)+托管 WPF 应用程序

c# - .Net Core 3.1 上的 AutoMapper

c# - 身份服务器 4 : Sorry, 出现错误:unauthorized_client

c# - Multi-Tenancy 身份服务器 4