在Application Insights中发现IdentityServer4错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Application Insights中发现IdentityServer4错误相关的知识,希望对你有一定的参考价值。

我有以下设置:

  • ASP.NET Core 3.1应用程序,已部署到Azure应用程序服务
  • 通过IdentityServer4.AspNetIdentity软件包,版本3.1.0使用IDS4
  • Program.cs中,它从.UseApplicationInsights() 2.5.1版调用Microsoft.ApplicationInsights.AspNetCore
  • Default LogLevel设置为Warning
  • 我的Error.cshtml显示Activity.Current?.Id ?? HttpContext.TraceIdentifier

这将从应用程序服务中正确记录了几件事,但是我找不到由IDS4报告的OpenID / OAuth2协议级别的any错误(例如,请求的无效范围等)。例如,我可以找到类似的内容:

requests
| where cloud_RoleName == 'my-identity-server-4-role'
| order by timestamp desc
| where url contains 'errorId'
| limit 100

这是有道理的,因为我在登录时遇到了一些(其他)问题,其中隐式流静默刷新失败,并重定向到问题URL la https://my-identity-domain.example.org/home/error?errorId=some-long-string-here。该页面向我显示了一个错误页面,该页面解释了我可以打开计算机上的DeveloperExceptionPage功能,或者可以使用:

请求ID:| 123aaac2c1cccf4eb3333411aaa183da7e.bba43cca1 _

现在我尝试通过以下方式在AppInsights中找到requests条目:>

  • | where id contains "123aaac2c"
  • | where operation_Id contains "123aaac2c"
  • | where operation_ParentId contains "123aaac2c"
  • | where session_Id contains "123aaac2c"
  • | where itemId contains "123aaac2c"
  • | where problemId contains "123aaac2c"
  • exceptions类似,其中任何id字段都包含我的ID的一部分。但我似乎找不到结果。

我做错了什么?我还在找错地方吗?还是应该以某种方式增加日志级别?还是我需要在某处添加代码以配置IdentityServer4来记录这些内容?


注意:如果我从控制台本地运行应用程序,则确实会看到输出流中是否有错误。例如,我在启动时添加了_logger.LogError("test error"),并将SPA配置为使用本地IDS但作用域不正确,并且看到以下输出:

fail: MyApp.Identity.Startup[0]
      test error
Hosting environment: Development
Content root path: C:\git\my-app\MyApp.Identity
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
fail: IdentityServer4.Validation.ScopeValidator[0]
      Invalid scope: triggererroridwithinvalidscope
fail: IdentityServer4.Endpoints.AuthorizeEndpoint[0]
      Request validation failed

第一个错误只是检查如何记录正常错误,第二个错误是模拟我的实际问题(如我的问题前面所述,它触发了errorId页面。

总之,我确实看到通过ASP.NET Core日志记录在控制台上的内容,但是在AppInsights中找不到它们。


[注意:我进一步研究了IdentityServer4如何进行日志记录,并通过注入例如C#使用ASP.NET Core默认日志记录系统进行日志记录。 Microsoft的Abstractions中的as documented,然后使用一些辅助方法来调用(ILogger<T>):

for example

也许这没有出现在AppInsights中,因为没有合适的位置吗?它不是跟踪,也不是请求,也没有真正的异常?

我具有以下设置:部署到Azure App Service的ASP.NET Core 3.1应用程序通过IdentityServer4.AspNetIdentity程序包(版本3.1.0)在IDF中使用IDS4。在Program.cs中,它调用....

答案

如果需要在Application Insights中找到与错误相关的日志条目,则可以搜索IdentityServer错误页面上显示的请求ID。请求ID来自var details = new TokenRequestValidationLog(_validatedRequest); // abbreviated snippet _logger.Log(LogLevel.Error, "Some message" + ", details: @details", details); 属性,应自动附加到日志事件中。您可以这样查询:

以上是关于在Application Insights中发现IdentityServer4错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Application Insights 中查看日志?

处于调试模式时的 Application Insights

在 Application Insights 中记录 json 序列化错误

ILogger 到 Application Insights

如何在 Application Insights 中获取 VMSS 的实例数?

Application Insights javascript sdk 无法正常工作