Blazor - app.UseIdentityServer(); 使用 .pfx 密钥文件 - 解析数字时遇到意外字符

Ogg*_*las 5 c# azure identityserver4 blazor blazor-webassembly

我创建了一个新的 Blazor WebAssembly 应用程序,其中包含个人用户帐户、应用程序内存储用户帐户和 .NET 5 中托管的 ASP.NET Core。将我的应用程序部署到 Azure 应用服务时,出现以下错误:

\n
\n

未将对象引用设置为对象的实例。at\nMicrosoft.Extensions.DependencyInjection.IdentityServerBuilderConfigurationExtensions

\n
\n

阅读这些链接我必须在生产中为 IdentityServer 提供我自己的证书:

\n

Blazor Web Assembly 应用程序 .Net Core 托管:发布运行时错误

\n

/sf/answers/3983280031/

\n

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-5.0#example-deploy-to-azure-app-service

\n

然后我创建了一个.pfx这样的文件,并且我已经验证它是否有效并且我的密码是正确的。

\n

/sf/answers/3415306191/

\n

然后,我将该.pfx文件放置在我的Server项目根文件夹中并标记Copy to Output DirectoryCopy Always.

\n

然后我更新appsettings.json为如下所示:

\n
  "IdentityServer": {\n    "Clients": {\n      "BlazorTest.Client": {\n        "Profile": "IdentityServerSPA"\n      }\n    },\n    "Key": {\n      "Type": "File",\n      "FilePath": "localhost.pfx",\n      "Password": "MySercurePassword123?"\n    }\n  },\n
Run Code Online (Sandbox Code Playgroud)\n

现在该项目既无法在本地运行,也无法在 Azure 上运行。它失败并app.UseIdentityServer();出现Startup.cs以下错误:

\n
\n

Newtonsoft.Json.JsonReaderException:\'解析数字时\n遇到意外字符:\xef\xbf\xbd。路径\'\',第1行,位置1。\'

\n
\n

根据 Microsoft 文档,我的证书应该有效:

\n

用于签署令牌的生产证书。

\n
    \n
  • 该证书没有具体要求;它可以是自签名证书或通过 CA 机构提供的证书。
  • \n
  • 它可以通过 PowerShell 或 OpenSSL 等标准工具生成。
  • \n
  • 它可以安装到目标计算机上的证书存储中,或部署为具有强密码的 .pfx 文件。
  • \n
\n

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-5.0#deploy-to-product

\n

如果我像这样加载密钥,它会起作用:

\n
"Key": {\n  "Type": "Store",\n  "StoreName": "My",\n  "StoreLocation": "CurrentUser",\n  "Name": "CN=blazortest"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Chr*_*lin 3

我可以通过删除appsettings.Development.json中的 IdentityServer 条目来解决此问题。

从应用程序设置中删除以下行。开发.json:

"IdentityServer": {
     "Key": {
       "Type": "Development"
     }
   } 
Run Code Online (Sandbox Code Playgroud)