最近项目中需要使用Identity Server 4,以前对这个技术只是有些了解,没有系统研究过,网上相关的资料不少,大多是从编写一个简单的认证服务开始,离能够落地使用有相当的距离,理论学习如何不结合实际,只能停留在概念层面。我希望的是能有一个已经可以部署的基于Identity Server 4的认证服务应用,在此基础上研究客户端和Api的编写,以及对各种需求场景进行测试。对这样一个应用的基本要求除了认证服务的功能以外,还包括(1)具备编辑或者配置功能。能够编辑User、Role、Client、Scope、Api Resource等,编辑的内容可以保存在数据库或者配置文件中;(2)可以工作在SSL协议和非SSL协议。在本地测试时,为了简化环境,希望可以不使用SSL协议。(3)可以独立部署,也可以部署在IIS,还需要支持Docker容器部署。沿着这个思路,在GitHub中找到了IdentityServer4.Admin这个项目,基本上符合要求:https://github.com/skoruba/IdentityServer4.Admin 。这个项目支持使用模板开发,可以使用模板创建新的项目,按照自己的需要进行改造,我在这项目的基础上,增加了对BasePath的支持,这样可以将认证服务器和编辑模块部署到同一端口的不同目录下(使用IIS或者Nginx等反向代理),还增加了对非SSL的支持。在Docker支持方面,原项目的配置过于复杂,改为针对认证服务和编辑模块生成两个不同的镜像,在部署时分别创建容器就可以了。项目的地址是 https://github.com/zhenl/IDS4Admin 。项目使用Visual Studio 2022,基于.Net 5(认证服务和管理)和.Net 6(辅助工具控制台)。

克隆或者下载项目后,运行buildscript.bat可以生成部署文件和辅助工具。生成的目录与项目目录同级,名称为IDS4AdminPublish,包括三个子目录,一个是认证服务器(STS),一个是管理界面(Admin),还有一个是辅助工具(Tool)。辅助工具方便生成配置文件和初始的种子数据。



首先进入Tool目录,运行辅助工具IDS4Admin.Tool.exe,设置认证服务器和管理界面应用的地址、数据库的类型和连接字符串,设置完成后执行命令“5”生成配置文件。

生成的json文件保存在Output目录下,包括两个子目录,Admin子目录中包括生成的三个json文件,这三个文件需要拷贝到管理应用的运行目录中(IDS4AdminPublish/Admin),覆盖现有文件,STS子目录中包括生成的认证服务的配置文件,拷贝到认证服务的运行目录中(IDS4AdminPublish/STS)。第一次运行时,要首先运行管理界面应用,因为初始化数据库的部分在这个应用中,然后运行认证服务器,如果一切顺利,在浏览器中访问管理应用,会跳转到认证服务器,要求登录,初始用户名为admin,密码为P@$$word123。登录完成后,就可以对认证服务的资源进行管理了。

环境搭好了,我们可以编写客户端和Api进行测试,深入理解相关的概念。

Identity Server 4 从入门到落地(一)—— 从IdentityServer4.Admin开始的更多相关文章

  1. Identity Server 4 从入门到落地(五)—— 使用Ajax访问Web Api

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  2. Identity Server 4 从入门到落地(四)—— 创建Web Api

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  3. Identity Server 4 从入门到落地(六)—— 简单的单页面客户端

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  4. Identity Server 4 从入门到落地(七)—— 控制台客户端

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  5. Identity Server 4 从入门到落地(八)—— .Net Framework 客户端

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  6. Identity Server 4 从入门到落地(九)—— 客户端User和Role的解析

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  7. Identity Server 4 从入门到落地(十)—— 编写可配置的客户端和Web Api

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  8. Identity Server 4 从入门到落地(十一)—— Docker部署

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  9. Identity Server 4 从入门到落地(十二)—— 使用Nginx集成认证服务

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

随机推荐

  1. Vulnstack内网靶场2

    环境配置 内网2靶场由三台机器构成:WIN7.2008 server.2012 server 其中2008做为对外的web机,win7作为个人主机可上网,2012作为域控 网络适配器已经设置好了不用自 ...

  2. IEEE754浮点数的转换

    将十进制数转换为单精度浮点数 如何将十进制数转换为单精度浮点数参考 首先要知道 IEEE浮点标准:V=(-1)^s * M * 2^E 1.符号(sign)s决定这个数是负数(s=1)还是正数,0(s ...

  3. Uniapp云打包生成apk下载链接

    使用uni[]()app云打包生成安装包下载链接 manifest.json 中配置自动获取appid manifest.json中配置app 图标 按教程生成.keystore证书 使用云打包生成安 ...

  4. Gitflow branch与Docker image tag命名冲突怎么办?

    谷歌还是比必应要好用一点. 在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上. 在现代devops流程中,一般推荐使用git分支名或 ...

  5. Noip模拟73 2021.10.10

    老妈送来了防寒补给就很棒,再也不用晚上盖两层毛巾被了,再也不用担心晚上自动把毛巾被$split$了 还有一些好吃的耶叶 T1 小L的疑惑 考场上疑惑的切掉了 直接把$a$排序然后处理前缀和的过程中判断 ...

  6. 从零开始 DIY 智能家居 - 基于 ESP32 的智能语音合成播报模块

    目录 前言 硬件选择 代码解析 获取代码 设备控制命令: 设备和协议初始化流程: 配置设备信息 回调函数注册 语音播报与设置流程 总结 前言 这里这么多设备,突然发现我做的好像都是传感器之类的居多好像 ...

  7. c++中virtual 虚函数

    转载: https://www.cnblogs.com/weiyouqing/p/7544988.html 在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念. ...

  8. Luogu P1563 [NOIp2016提高组]玩具谜题 | 模拟

    题目链接 纯模拟题,没啥好说的,就是要判断地方有点多,一定要注意细节. #include<iostream> #include<cstdio> #include<fstr ...

  9. c#复制数组的多种方法

    方法一:使用for循环 int []pins = {9,3,7,2} int []copy = new int[pins.length]; for(int i =0;i!=copy.length;i+ ...

  10. poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)

    题意: 出租车公司有M个订单. 订单格式:     hh:mm  a  b  c  d 含义:在hh:mm这个时刻客人将从(a,b)这个位置出发,他(她)要去(c,d)这个位置. 规定1:从(a,b) ...