微服务之授权认证 identity server 4

网站建设2年前 (2021)发布
43 0 0

IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证授权框架。,IdentityServer主要使用场景:,1)基于中台认证中心的saas系统/pass系统的单点登录或者做为统一认证授权入口(授权模式:授权码模式Authorization Code或者混合模式hybrid);,2)用于API服务与API服务之间的固定token通讯,或者某业务系统服务群集与其他业务系统的服务群集之间通信,或者某业务系统群集服务与中台服务群集之间通信,所使用的授权模式为客户端模式Client Credential;,3)用于移动客户端与API服务之间通信,授权码模式为自定义授权码。,4)用于给第三方客户端授权使用平台数据资源,类似微信、支付宝等用户授权给。主要授权模式为权码模式Authorization Code,新建.net core 3.1项目,nuget安装IdentityServer4,我这里是3.14版本,微服务之授权认证 identity server 4,正常来说,商业业务,Api资源、Client客户端、Identity资源、User等数据存储在数据库,token可以存储在数据库也可以存储到redis,这里为了入门演示,使用内存模式,快速搭建。,定义一个类,创建API资源,客户端client,我们这里只使用客户端模式授权,篇幅问题,其他授权方式就不一一写了,基本都差不多,在启动类注入, 然后启动服务,使用postman访问identity server 4默认的endpoint地址发现文档:,微服务之授权认证 identity server 4,使用identityServer4的发现文档中的token_endpoint获取token,微服务之授权认证 identity server 4,token已经获取了,可以使用发现文档里的introspection_endpoint来验证token,微服务之授权认证 identity server 4,微服务之授权认证 identity server 4,上图可见,我们已经为client客户端,创建了一个拥有访问scope为apim权限的token,接下来,创建一个受保护的api服务,同样创建一个.net core 3.1服务,并nuget包安装Microsoft.AspNetCore.Authentication.JwtBearer,选择3.14版本,根据.net core版本来,在启动类中,配置认证和授权DI,和添加认证授权中间件:, 写2个接口;,微服务之授权认证 identity server 4,注意,Authorize标签可生效于类或者方法上,,根据不同的授权策略来合理安排需要保护的资源。最后,可以用刚才的token来访问这个API,,如果token错误会401,如果根据授权策略的不同,比如mytwo接口受到apiScope2策略保护,apiScope2策略需要apim2这个scope权限,因为刚才我们获取的token只包含apim这个scope权限,所以访问会返回403权限不足,大家可以去试试,我试过了就不贴图。,微服务之授权认证 identity server 4,至此demo结束,大家可以去试试其他模式的获取token方式,  商业级项目,授权资源是需要持久化存储的,官方已经提供了基于ef core的来维护我们授权资源和token的管理模型、上下文、仓储接口等,具体我就不写了,推荐参考这篇文章.net core 3.1 Identity Server4 (EntityFramework Core 配置) – 尘叶心繁的专栏 – TNBLOG。下面贴几张基于Identity Server4 EFCore包管理的APIResource、Client、Identity资源、Token的相关代码简介,下面是部分Client客户端管理代码:,View Code,下面以部分token管理代码:,View Code,下面还有一段关于修改token过期时间的代码:,View Code,再来一段自定义授权模式代码:,View Code,IdentityServer4还可以扩展endpoint,但是扩展完后,在发现文档不显示,但是可以作为http使用,以下代码截图供参考;,微服务之授权认证 identity server 4,  identityServer4要写的东西实在太多,整体的把握理解还是有一定的复杂性的,我之前公司一个pass平台项目,是基于认证中心,其他业务系统实现快速集成,我当时负责的就是授权资源、token管理,还有对IDP的授权类型、endpoint一些扩展,现在总结成博客,写的不是很细,希望对后来者带来一些帮助和参考意义。,

© 版权声明

相关文章