gpt4 book ai didi

c# - ASP Core 拦截所有身份验证请求

转载 作者:行者123 更新时间:2023-11-30 16:45:02 24 4
gpt4 key购买 nike

编辑我正在寻找一种拦截身份验证请求的通用方法,应该有一种方法可以全局配置它,使用中间件或事件等,与我正在使用的框架无关(IdentityServer4)

我正在使用 IdentityServer4 来验证我的 WebApi。我正在寻找事件来拦截身份验证前后的身份验证请求。

我的启动类以这种方式配置来处理身份验证。

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,

ApiName = "api1"
});

我正在寻找用于后身份验证的事件,以便我可以创建从 IdentityServer4 用户到本地用户的链接,这样我就可以在那里引用外键。

是否有插入 Post_Authentication_Requests 的事件或简单的方法,以及一般的身份验证请求,我也想对失败的登录尝试做一些额外的记录?

最佳答案

是的,大多数身份验证中间件都有一种方法可以连接到各自的身份验证事件中。这些可以找到here .要回答您的问题,有一些 PRE 和 POST 身份验证事件 Hook ,您需要选择一个满足您需求的 Hook 。示例:

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,

ApiName = "api1",

Events = new OpenIdConnectEvents()
{
OnMessageReceived = async context =>
{
//example of a "before" event hook
}

OnTokenValidated = async context =>
{
//example of an "after" event hook
var claimsIdentity = context.Ticket.Principal.Identity as ClaimsIdentity;
if (claimsIdentity != null)
{
// Get the user's ID
string userId = claimsIdentity.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
}
}
}
});

您还可以在 aspnet/Security 的示例存储库中查看示例 here ,他们演示了如何劫持失败的身份验证请求以返回 500(而不是正常的 401)

关于c# - ASP Core 拦截所有身份验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com