gpt4 book ai didi

asp.net-core - 在ASP.Net Core中转换Open Id Connect声明

转载 作者:行者123 更新时间:2023-12-01 20:18:13 25 4
gpt4 key购买 nike

我正在编写一个ASP.Net Core Web应用程序,并使用UseOpenIdConnectAuthentication将其连接到IdentityServer3。模拟他们的ASP.Net MVC 5示例,我试图将从Identity Server收到的声明转换回去以删除“ low level protocol claims that are certainly not needed”。在MVC 5中,他们为SecurityTokenValidated Notification添加了一个处理程序,该处理程序将AuthenticationTicket换成仅具有必需声明的一个。

在ASP.Net Core中,要做等同操作,我认为我需要处理OnTokenValidated中的OpenIdConnectEvents。但是,在那个阶段似乎还没有检索到其他范围信息。如果我处理OnUserInformationReceived,则会显示额外的信息,但会存储在用户而非主体上。

似乎没有其他事件可以很明显地永久删除在身份验证完成后我不希望保留的声明。任何建议深表感谢!

最佳答案

我喜欢LeastPrivilege的建议,以便在此过程的早期进行转换。提供的代码不太有效。此版本可以:

var oidcOptions = new OpenIdConnectOptions
{
...

Events = new OpenIdConnectEvents
{
OnTicketReceived = e =>
{
e.Principal = TransformClaims(e.Ticket.Principal);
return Task.CompletedTask;
}
}
};


这将替换 Principal而不是 Ticket。您可以使用其他答案中的代码来创建新的 Principal。您也可以同时替换 Ticket,但不确定是否有必要。

因此,感谢LeastPrivilege和Adem提出的方法几乎可以回答我的问题...只是代码需要稍作调整。总体而言,我更喜欢LeastPrivilege的建议,即尽早转换主张。

关于asp.net-core - 在ASP.Net Core中转换Open Id Connect声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036852/

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