- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下设置:
IdentityServer4.AspNetIdentity
使用 IDS4包,版本 3.1.0Program.cs
它调用 .UseApplicationInsights()
来自Microsoft.ApplicationInsights.AspNetCore
版本2.5.1Default
LogLevel
设置为Warning
Error.cshtml
显示Activity.Current?.Id ?? HttpContext.TraceIdentifier
这正确地记录了应用服务中的一些内容,但我找不到 IDS4 报告的 OpenID/OAuth2 协议(protocol)级别的任何错误(例如,请求的范围无效等)。例如,我可以找到这样的东西:
requests
| where cloud_RoleName == 'my-identity-server-4-role'
| order by timestamp desc
| where url contains 'errorId'
| limit 100
这是有道理的,因为我在登录方面遇到了一些(其他)问题,其中隐式流程静默刷新失败并重定向到问题网址 https://my-identity-domain.example.org/home/error?errorId=some-long-string-here
。该页面向我显示了一个错误页面,解释了我可以在我的计算机上打开 DeveloperExceptionPage 功能,或者我可以使用:
Request ID: |123aaac2c1cccf4eb3333411aaa183da7e.bba43cca1_
现在我尝试找到 requests
AppInsights 条目由
| 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 如何进行日志记录,并且 as documented它使用 ASP.NET Core 默认日志系统进行日志记录,例如注入(inject)一个ILogger<T>
来自 Microsoft 的 Abstractions,然后使用一些辅助方法来调用( for example ):
var details = new TokenRequestValidationLog(_validatedRequest);
// abbreviated snippet
_logger.Log(LogLevel.Error, "Some message" + ", details: {@details}", details);
也许这不会出现在 AppInsights 中,因为没有合适的地方?它不是 Trace,不是 Request,也没有真正的 Exception?
最佳答案
如果需要在 Application Insights 中查找与错误相关的日志条目,可以搜索 IdentityServer 错误页面上显示的请求 ID。请求 ID 来自 System.Diagnostics.Activity.Current.Id 属性,并应自动附加到日志事件。您可以这样查询:
traces
| where customDimensions["RequestId"] == "80006a82-0000-e800-b63f-84710c7967bb"
| order by timestamp desc
| limit 50
关于身份服务器事件根本没有显示在 Insights 中,您可以尝试将其添加到您的 Startup
类中吗?
services.AddIdentityServer(options => {
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
})
另请注意,日志事件实际显示在 Application Insights 日志查看器中可能需要一些时间。为了排除这个问题来源,我会等待几分钟再运行您的查询。
关于c# - 在 Application Insights 中查找 IdentityServer4 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898089/
在登录并同意后使用任何标准身份提供者(谷歌、Facebook)时,他们会重定向到我的主要身份服务器,并让它重定向到在其中注册的隐式客户端。我如何使用另一个身份服务器作为外部身份提供者实现相同的行为?
我正在开发一个 SPA Web 应用程序,并且我正在使用 IdentityServer4 代码流来处理授权。所以我有以下组件: Angular 客户端应用程序,https://localhost:50
我正在设置 IdentityServer 的一个新实例作为身份提供者。登录时,我想在我的用户对象上设置一些额外的自定义声明。现在,我正在使用以下代码: [HttpPost] public async
我正在尝试遵循本指南 https://identityserver.github.io/Documentation/docs/advanced/customizingViews.html通过将 ass
当使用 IdentityServer 3 时签名证书(用于签名 jwt token )过期会发生什么? 我不清楚,我找不到任何文档,除了可能会收到它已过期的警告。 (Ref. https://iden
我有一个使用 IdentityServer4 进行 token 验证的 API。 我想使用内存中的 TestServer 对这个 API 进行单元测试。我想在内存中的 TestServer 中托管 I
我正在尝试将 Identity Server 4 与 Ocelot 集成并对 WebApp (asp.net core 3.1) 进行身份验证,然后在请求通过身份验证时访问 api。 为此我创建了一个
如果您有多个客户端和一个处理用户身份验证的中央 IdentityServer 4 实例,您将如何管理各个客户端的用户配置文件? 当前情况: 用户点击“管理个人资料” 用户被重定向到 IdentityS
我正在开发一个带有 angular 的前端应用程序和一个带有 Asp.Net Core 的后端应用程序,其中包含用于身份验证的 IdentityServer4(基于此 github project)。
我有一个包含用户的数据库,我该如何开始使用 IdentityServer 创建我的用户的自定义实现?我看到的所有示例都使用了用值硬编码的 InMemoryUser。 有人可以关注this作为指南? 最
我们公司有一个 SSO 应用程序,我希望用 IdentityServer4 或 3 替换大部分身份验证管道。我要替换的版本有自己的动态客户端注册自定义实现(不符合规范)和一个 UI 来管理它。 有nu
我正在使用 IdentityServerV3 对少数客户端的用户进行身份验证。我在配置 IdentityServer 时遇到问题,特定的 user 必须能够登录到特定的“客户端”。 让我们来看下面的场
目前我们正在使用 JWT token 进行身份验证(有效),但我想使用引用 token 。目前我们的配置是这样的: public static class Config { ///
我在启动 IdentityServer 3 时遇到问题。这是一个非常简单的设置,我打算将其用于开发环境,但我在诊断问题时遇到了问题。这是我的代码: Startup.cs using Owin;
我正在使用来自 IdentityServer 4 实例的 OAuth2。基于this example ,我能够登录并调用服务器托管的 API。 如何在不显示提示用户确认注销的 Web View 的情况
我是 IdentityServer 3 的新手,示例和教程使用的是 InMemory 用户、客户端和范围,但我需要这些来自 DB。所以我做了: 启动.cs public void Configurat
我一直在阅读和观看有关 Identity Server 4 的大量内容,但我仍然对它感到有些困惑,因为它似乎有太多的事件部分。 我现在明白这是一个单独的项目,它负责对用户进行身份验证。我仍然不明白的是
我似乎无法理解为什么我会从 IdentityServer 获得 unauthorized_client。我将 oidc-client 与 Angular 4 ui 和 Web API 的 asp.ne
我在 IdentityServer 中设置了以下客户端: new Client { ClientName = "My web application", Enabled = true,
在本地,我有一组 Web 应用程序都可以通过一次登录访问。 为此,我采用了 Identity Server 4。 一旦应用程序发布在本地服务器上,无法远程访问,我就通过 openssl 生成了一个 S
我是一名优秀的程序员,十分优秀!