【问题标题】:ModelState error on Facebook external authenticationFacebook 外部身份验证上的 ModelState 错误
【发布时间】:2019-08-29 22:38:22
【问题描述】:

我正在学习 ASP.NET Core 2.2 MVC 框架。我已经构建了一个简单的应用程序,并为其命名,目前正在通过 Microsoft 文档使其工作。我目前的目标是设置 Facebook 外部身份验证。

我有包含个人用户帐户身份验证的 Visual Studio 模板,我计划将此应用程序部署到 Azure 云。我按照所有步骤通过 Facebook 的开发者页面注册了我的应用程序。我特别不想硬编码 Facebook 的 App Id 和启动文件的秘密,因为我想实现 Azure 密钥库以提高安全性。我选择使用 Azure 密钥保管库而不是本地机密,因为我想将此解决方案部署到云中。

问题是,如果我运行该解决方案,我会看到正确的按钮显示以将我带到 Facebook 的身份验证。它将我路由到他们的错误页面,在调试器中,我看到了这个错误:

Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:信息: 执行处理程序方法 RecipeBox3._0.Areas.Identity.Pages.Account.ExternalLoginModel.OnPost 带参数 (Facebook, /) - ModelState 无效

没有关于这个错误的文档,我正在兜圈子试图找出这个错误的原因。有什么办法可以得到帮助吗?

我已经尝试了大量研究 Facebook 需要通过什么;如果他们需要的不仅仅是 id 和 secret,那么我找不到任何能说明这一点的东西。我尝试逐步找出哪些数据正在传递给 Facebook,但没有成功,这是对 ASP.Net Core 如何处理身份和服务缺乏基本了解。

这是我的启动配置中的位,我称之为我的 Facebook 类,它从 Azure Key Vault 读取

 services.Configure<Facebook>(Configuration);
            services.AddTransient<Facebook>();
            services.AddAuthentication().AddFacebook(facebookOptions =>
                        {
                            facebookOptions.AppId = Options.facebookID.ToString();
                            facebookOptions.AppSecret = Options.FacebookSecret.ToString();
                        });

            services.Configure<RecipeBox3._0.Services.SendGrid>(Configuration);
            services.AddTransient<IEmailSender, EmailSender>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

这是我的 Facebook 课程(大小写与密钥库中的内容完全匹配)

public class Facebook
{
   public long facebookID { get; set; }
   public long FacebookSecret { get; set; }
}

【问题讨论】:

  • 更新:如果我对 ID 和密码进行硬编码,它就可以工作。所以 Key Vault 检索一定有问题。

标签: authentication asp.net-core configuration modelstate


【解决方案1】:

我想通了!我不得不像这样调用 KeyVault 内部的值:

 facebookOptions.AppId = Configuration["facebookID"];
                           facebookOptions.AppSecret = Configuration["FacebookSecret"];

所以我的课程没有按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2013-10-02
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多