OpenIdConnectSecurityKeyProvider.RetrieveMetaData Exception - 无法从 :"System.String"检索文档



这已经工作了3年多了。今天早上一切都坏了。

我的SPA在后端使用C#Web API,在前端使用MSAL.js。用户通过O365验证以获得承载令牌,所有web请求都将令牌传递到API后端。在花了大半个上午的时间重新熟悉这个技术堆栈之后,我想我可以问一个半智能的问题了。

OpenIdConnectSecurityKeyProvider。RetrieveMetaData方法在尝试检索配置时引发致命异常

OpenIdConnectConfiguration config = ConfigManager.GetConfigurationAsync().Result;

起初我犯了这个错误。

";InvalidOperationException:IDX20803:无法从中获取配置:"[PII是隐藏的]">

在升级了几个微软之后。IdentityModel软件包和Microsoft。Owin包抛出的异常为.

IOException:IDX20807:无法从"系统"中检索文档。字符串'。HttpResponseMessage:'系统。网Http。HttpResponseMessage',

任何关于如何继续调试的想法都将非常有帮助。

我不知道这是否适用于您,但对我来说,在启动.cs中添加此行有效:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

这源于文章:https://learn.microsoft.com/en-us/troubleshoot/azure/active-directory/enable-support-tls-environment?tabs=azure-监视器

因此,我认为有一种方法可以在操作系统级别默认切换TLS方法,但目前上述代码更改有效。

MS已经关闭了Azure AD的TLS 1.0、TLS 1.1和3DES加密,并最终关闭了GraphAPI。为了发现实际错误,我不得不启用PII(个人身份信息(。基本上,PII是/曾经是API密钥,其中还包括Azure AD的完整堆栈错误。您可以在startup.cs中或在任何时候初始化IAppBuilder接口的地方启用此功能。这是女士的公告

https://learn.microsoft.com/en-us/troubleshoot/azure/active-directory/enable-support-tls-environment?tabs=azure-monitor#enable-tls-12-on-client-or-server-operating-systems-

using System;
using System.Threading.Tasks;
using System.Web.Http;
using Microsoft.Owin;
using Microsoft.IdentityModel.Logging;
using Owin;
[assembly: OwinStartup(typeof(MERP.Startup))]
namespace MERP
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configure(WebApiConfig.Register);
IdentityModelEventSource.ShowPII = true; //Important for debugging
ConfigureAuth(app);
}
}
}

在得到实际错误后,基本上不支持TLS版本。我不得不使用powershell脚本启用TLS 1.2。下面是一篇使用PS脚本启用TLS 1.2的MS文章。https://learn.microsoft.com/en-us/azure/active-directory/hybrid/reference-connect-tls-enforcement

启用TLS 1.2 PS脚本以方便访问

If (-Not (Test-Path 'HKLM:SOFTWAREWOW6432NodeMicrosoft.NETFrameworkv4.0.30319'))
{
New-Item 'HKLM:SOFTWAREWOW6432NodeMicrosoft.NETFrameworkv4.0.30319' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:SOFTWAREWOW6432NodeMicrosoft.NETFrameworkv4.0.30319' -Name 'SystemDefaultTlsVersions' -Value '1' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -Path 'HKLM:SOFTWAREWOW6432NodeMicrosoft.NETFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -PropertyType 'DWord' -Force | Out-Null
If (-Not (Test-Path 'HKLM:SOFTWAREMicrosoft.NETFrameworkv4.0.30319'))
{
New-Item 'HKLM:SOFTWAREMicrosoft.NETFrameworkv4.0.30319' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:SOFTWAREMicrosoft.NETFrameworkv4.0.30319' -Name 'SystemDefaultTlsVersions' -Value '1' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -Path 'HKLM:SOFTWAREMicrosoft.NETFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -PropertyType 'DWord' -Force | Out-Null
If (-Not (Test-Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server'))
{
New-Item 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -Name 'Enabled' -Value '1' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -Name 'DisabledByDefault' -Value '0' -PropertyType 'DWord' -Force | Out-Null
If (-Not (Test-Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client'))
{
New-Item 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -Name 'Enabled' -Value '1' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -Name 'DisabledByDefault' -Value '0' -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.2 has been enabled. You must restart the Windows Server for the changes to take affect.' -ForegroundColor Cyan

相关内容

最新更新