IdentityServer4 使用Hybird Flow保护Asp.Net Core MVC 客户端
1.使用Hybird Flow保护Asp.Net Core MVC 客户端
并访问被保护资源
刷新Access Token
处理Claim
基于策略的权限
授权端点
重定向端点
Token端点
主要授权方式
OpenID Connect Flows
OpenId Connect Flows Response Type
response_type=code id_token
response_type=code token
response_type=code id_token
请求格式
响应格式
2.Claim 角色授权
2.1Idp工程代码配置
(1)TestUser自定义Cliam Role
(2)Identity认证资源配置Role
(3)Mvc客户端配置可以访问的资源roles
2.2Mvc客户端工程配置
(1)当没有权限时增加跳转页面
(2)增加需要访问的roles资源并且将Cliam的Role和Mvc的Role进行映射
(3)将特性加到Controller或者Method上进行权限验证
3.受保护的Claims
3.基于策略授权(PBAC)
3.1Idp工程配置
(1)给用户增加Claim标识
(2) 在认证资源、api资源和客户端进行访问配置
3.2 Mvc客户端配置
3.2.1客户端增加访问资源配置
3.2.2自定义策略认证并且注入服务

public class SmithInSomewareRequirement : IAuthorizationRequirement { public SmithInSomewareRequirement() { } } public class SmithInSomewhereHandler : AuthorizationHandler<SmithInSomewareRequirement> { protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, SmithInSomewareRequirement requirement) { //var filterContext = context.Resource as AuthorizationFilterContext; //if (filterContext == null) //{ // context.Fail(); // return Task.CompletedTask; //} var familyName = context.User.Claims.FirstOrDefault(c => c.Type == JwtClaimTypes.FamilyName)?.Value; var location = context.User.Claims.FirstOrDefault(c => c.Type == "location")?.Value; if (familyName == "Smith" && location == "somewhere" && context.User.Identity.IsAuthenticated) { context.Succeed(requirement); return Task.CompletedTask; } context.Fail(); return Task.CompletedTask; // 一个Handler成功,其它的Handler没有失败 => Requirement被满足了 // 某个Hanlder失败 => 无法满足Requirement // 没有成功和失败 => 无法满足Requirement } }
3.2.3策略授权
将特性加到Controller或者Method中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!