本人做微服务项目也有一段时间了,在微服务中让我感触颇深的就是这个IdentityServer4了,ID4(IdentityServer4的简称)中涉及的概念颇多,本文不谈概念(我怕读者没耐心看下去),在这分享下我个人的使用心得。
1. ID4简介
2. ID4使用
相信大家都知道面向对象中的封装(把通用的功能封装起来,减少程序中大量重复代码),我们知道在一个单体系统中有很多的重复模块,例如:身份认证、权限控制检查等,在单体系统中,这些都可以使用aop统一在一个地方控制。而在分布式系统,每个系统都需要进行身份认证、权限检查等。这时,每个系统都得写一套同样的代码来进行这些控制,我们能不能像单体系统那样在一个地方进行这些流程呢?这时我们可以使用IdentityServer4来实现。
IdentityServer4是一个集成 身份认证和授权 的组件,使用OpenId Connect(身份识别框架) 和 Auth2.0(授权框架)来进行身份认证和授权的。
我这里只列出几个主要的类,其它,可以下载项目来看。关于如何使用,代码有点多,我比较懒,就没怎么讲解,感兴趣的小伙伴可以加个QQ:1983702356 来讨论下。
项目地址: https://github.com/MapleWithoutWords/IdentityServer4Demo
(注意:下载项目后,记得把数据库链接字符串改下)
项目环境:
项目结构:
以下几个类比较关键
Config.cs。主要是获取身份资源
1
|
public class Config
|
TestClientStore.cs 加载IdentityServer4的client
1
|
/// <summary>
|
TestReourceStore.cs,加载IdentityServer的APIResource
1
|
/// <summary>
|
TestResourceOwnerPasswordValidator.cs,IdentityServer4登录验证
1
|
/// <summary>
|
ProfileService.cs,用户信息
1
|
public class ProfileService : IProfileService
|
1
|
public class Startup
|
1
|
|
在 WebApplication1 目录下运行cmd命令 dotnet run ,启动IdentitServer4,端口是9500
运行项目 WebApplication3 ,端口是5000
当我们直接调用 WebApplication3 API中的方法时,发现返回状态码为 401
请求Id4,复制返回的 access_token
再请求WebApplication3 API,并在报文头带上token
个人认为我这种使用方式和其它使用方式最大的好处就是,可以写一个IdentityServer4的Client、APIResource增删改查,然后因为每次请求的时候都是从数据库读取数据的,如果数据被修改了,会立即生效。
原文:https://www.cnblogs.com/norain/p/IdentityServer.html