我正在使用Asp.NetCore3.1和throughChallenge方法,调用外部端点进行身份验证
public async Task<IActionResult> Challenge(string provider, string returnUrl,string userName)
{
var props = new AuthenticationProperties
{
RedirectUri = Url.Action(nameof(Callback)),
Items =
{
{ "returnUrl", returnUrl },
{ "scheme", provider },
},
Parameters =
{
{ OidcConstants.AuthorizeRequest.LoginHint, userName }
}
};
var result = Challenge(props, provider);
return result;
}
错误代码:
An unhandled exception occurred while processing the request.
IOException: IDX20807: Unable to retrieve document from: 'System.String'. HttpResponseMessage: 'System.Net.Http.HttpResponseMessage', HttpResponseMessage.Content: 'System.String'.
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(string address, CancellationToken cancel)
InvalidOperationException: IDX20803: Unable to obtain configuration from: 'System.String'.
Microsoft.IdentityModel.Protocols.ConfigurationManager<T>.GetConfigurationAsync(CancellationToken cancel)
如何解决这个问题?
6条答案
按热度按时间v6ylcynt1#
当我在Visual Studio 2019中创建一个新的.NET 5项目时,出现了这个异常。
IO异常错误:IDX 20807:无法从以下位置检索文档:'系统.字符串'。HttpResponseMessage:'System.Net.Http. HttpResponseMessage',HttpResponseMessage.内容:'系统.字符串'。Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(字符串地址,CancellationToken cancel)Microsoft.IdentityModel.Protocols.OpenIdConnect. OpenIdConnectTransferationRetriever.GetAsync(字符串地址,IDocumentRetriever检索器,CancellationToken cancel)Microsoft.IdentityModel.Protocols. TransferationManager. GetTransferationAsync(CancellationToken cancel)
在启动应用程序之前,我得到了这个错误:
所需组件-
dotnet msidentity tool
您可以在Connected Services - Service dependencies中修复此问题,并通过按Configure设置Microsoft Identity Platform。
对我来说,它就像这样卡住了,但什么也没发生:
在
appsettings.json
中,我找到了以下代码:访问https://aka.ms/dotnet-template-ms-identity-platform并使用工具
msidentity-app-sync
代替。开始安装它,然后验证我有安装的工具。然后在projects文件夹中运行
msidentity-app-sync
。新的App registrations
将在Azure Active Directory
中创建,项目现在可以工作了。如果您希望使用现有的应用程序,您也可以自己指定租户和客户端,如下所示:
sczxawaw2#
也证实了杜尚的回答。从https://devblogs.microsoft.com/dotnet/jwt-validation-and-authorization-in-asp-net-core/
授权是令牌颁发身份验证服务器的地址。JWT承载认证中间件将使用此URI查找并检索可用于验证令牌签名的公钥。它还将确认令牌中的iss参数与此URI匹配。
我没有使用公共令牌颁发认证服务器。
kqqjbcuj3#
不知道这有多大关系,但有人可能会发现它对处理这个异常很有用。
我正在使用ASP.NET Core 3.1,试图实现JWT身份验证。设置权限后,我开始接收类似的error。
问题的Fix正在设置“ValidIssuer”参数,而不是设置Authority。
vq8itlhq4#
也许这对你有帮助:我使用了一个来自https://dev.to/moe23/asp-net-core-5-rest-api-authentication-with-jwt-step-by-step-140d的脚手架示例,
在该示例中,引用了Nuget包System.IdentityModel.Tokens.Jwt。我删除了它,因为我不需要它,错误消失了
ttcibm8c5#
我们可以通过在Web.config文件中将.NET Framework版本从4.5.2升级到4.7.2来解决上述问题
ndh0cuux6#
我从一本书上学到的API中的权限配置错误导致了这个问题。它引导我设置值https://tenant-id.auth0.com,但当创建帐户在auth0。它将我们添加到URL,例如:https://tenant-id.us.auth0.com