asp.net-core - 客户端中的 IdentityServer 4 身份验证事件
问题描述
我将 IdentityServer 4 服务器设置为独立应用程序,使用 net core 3.1、针对 MySql 的 Entity Framework core 和 Net Core Identity 作为用户存储。另外,我有一个 Razor Pages 客户端应用程序,它针对身份服务器进行身份验证,用户登录发生在服务器上。所有这一切都很好。
我现在希望能够在客户端上为任何新用户身份验证或登录失败编写日志条目。我认为必须在某处引发事件。请问我该怎么办?
解决方案
我有同样的要求,例如在审计日志中存储身份验证失败 - 如果有人试图使用无效令牌访问 api。
我发现它IdentityServerAuthenticationOptions
具有JwtBearerEvents
可用于通知此类事件的属性。
就我而言,它是这样工作的:
.AddAuthentication(AUTH_SCHEME).AddIdentityServerAuthentication(AUTH_SCHEME, options => {
options.ApiName = config.ApiName;
options.Authority = config.Address;
options.JwtBearerEvents = new JwtBearerEvents
{
OnAuthenticationFailed = c =>
{
// Log can bo done here
return Task.CompletedTask;
},
OnTokenValidated = c =>
{
// Log can bo done here
return Task.CompletedTask;
},
OnChallenge = c =>
{
// Log can bo done here
return Task.CompletedTask;
},
OnForbidden = c =>
{
// Log can bo done here
return Task.CompletedTask;
}
};
options.SupportedTokens = SupportedTokens.Jwt;});
我担心它会覆盖正常的 IS 行为,但一切似乎都像以前一样工作。
您可以在那里访问适当的上下文,例如在JwtBearerChallengeContext
您可以读取Error
或ErrorDescription
字符串甚至整个HttpContext
.
推荐阅读
- visual-studio-2017 - Nuget“管理包”对话框。项目名称混淆
- matlab - multiple curves intersecting one master line
- angular - 防止 Angular 指令和 ngModel 中的 keydown 出现默认值
- c# - 计算从压缩的 HTTP 响应流中读取的字节百分比
- java - 什么是具有获取元素功能的具有唯一元素(如集合)的正确 Java 集合
- python - python3 - ImportError:没有名为 twython 的模块
- flutter - 如何退出 Dart Pub CLI?
- ios - 使用 ios 设备设置 android things
- python - python中的价格解析-如何在第一次出现任何数字之前将列表中的所有字符串拆分一次?
- node.js - 有没有办法通过编辑 package.json 来摆脱 npm 可选依赖警告?