最近项目中需要使用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. Redis分布式锁的正确实现方式[转载]

    前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...

  2. 【转】简述C和C++的学习历程

    简述C和C++的学习历程(转) --by:肖舸老师总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复. 一家之言,欢迎拍砖哈. 1.可以考虑先学习C. 大多数时候 ...

  3. ubuntu20.04 使用root用户登录

    1.设置root用户密码 执行 sudo passwd root 然后输入设置的密码,输入两次,这样就完成了设置root用户密码了 2.修改配置文件 执行 sudo vim /usr/share/li ...

  4. [对对子队]Beta设计和计划

    需求再分析 Alpha阶段用户反馈的问题主要有三个 新手引导部分没有明确指出合成按钮可以使用下拉框切换目标,因此不少玩家卡在第三关 觉得合成动画太长,希望可以快进或者跳过 对游戏目标很迷惑,不知道为什 ...

  5. 第一次Scrum Metting

    日期: 2021年4月23日 会议主要内容: 会议主要各自介绍一下所做任务,讨论了前后端接口定义以及服务器购买和接下来任务分配. 一.进度情况 组员 负责 两日已完成的工作 后两日计划完成的工作 工作 ...

  6. 通过两个位置的经纬度坐标计算距离(C#版本)

    /// <summary> /// 通过地图上的两个坐标计算距离(C#版本) /// Add by 成长的小猪(Jason.Song) on 2017/11/01 /// http://b ...

  7. 访问单个结点的删除 牛客网 程序员面试金典 C++ Python

    访问单个结点的删除 牛客网 程序员面试金典 C++ Python 题目描述 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点. 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回f ...

  8. 最短路spaf及dijkstra模板

    spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...

  9. Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)

    作为微服务的基础功能之一的注册中心担任重要的角色.微服务将单体的服务拆分成不同的模块下的服务,而不同的模块的服务如果进行通信调用呢?这就需要服务注册与发现.本文将使用阿里开源项目 nacos 搭建服务 ...

  10. 计算机网络-3-2-点对点协议PPP

    点对点协议PPP 在通信链路较差的年代,在数据链路层使用可靠传输协议曾经是一种好方法,比较简单的点对点PPP协议则是目前使用最广泛的数据链路层协议. PPP协议的特点 互联网用户通过都要连接到某个IS ...