惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
T
Tailwind CSS Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
PCI Perspectives
PCI Perspectives
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
C
Cybersecurity and Infrastructure Security Agency CISA
O
OpenAI News
Recorded Future
Recorded Future
GbyAI
GbyAI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
量子位
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
F
Full Disclosure
Recent Announcements
Recent Announcements
Vercel News
Vercel News
S
Schneier on Security
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
B
Blog RSS Feed
宝玉的分享
宝玉的分享
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy & Cybersecurity Law Blog
T
Threat Research - Cisco Blogs
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
爱范儿
爱范儿
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
N
Netflix TechBlog - Medium
S
Security @ Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cyberwarzone
Cyberwarzone

博客园 - 无心々菜

高并发 - 配置2 高并发 - 配置 地图 - QGIS加载geojson,并导入Postgis数据库 VUE2 - Geoserver打印矢量PDF地图 - 在VUE2中的应用 地图 - Geoserver打印矢量PDF地图 Docker - 离线+无root环境安装 docker-rootless 运维 - 哪吒监控 Postgres 数据库在docker环境下分布式部署(arm64框架) Postgres 数据库在docker环境下分布式部署 Https - 配置方案 OpenObserver - 系统接口监控 VUE3 - Docker部署 + traefik反代 VUE2 - Docker部署 + traefik反代 高斯DB 数据库的安装 NETCORE - 使用 EFCORE 调用 高斯DB数据库 JMeter - 压力测试 NETCORE - IdentityServer4 相关文档 .NET框架 - NETCORE + API + EF(DBFirst) + PostgresSql Docker 部署 APISIX + etcd Docker部署martin 矢量切片服务器 Postgres 数据库的安装 NETCORE - 调用 RUSTFS Docker - 部署 RustFS 对像存储 Docker - 使用 Docker Secrets 敏感数据传输 Docker - 部署 Consul KV 统一管理所有项目的配置 Docker - 部署 HashiCorp Vault 开源密钥管理工具 kong 网关下集成 Consul服务注册与发现 Docker 部署 kong 网关 Docker - 部署Consul 新
NETCORE - IdentityServer4 多节点部署
无心々菜 · 2026-03-05 · via 博客园 - 无心々菜

NETCORE - IdentityServer4 多节点部署

环境: .netcore3.1 

应用负载:10.5.45.104 指向 10.5.84.10,10.5.84.11两台服务器

负载轮询

10.5.84.10,10.5.84.11 上都部署有 ids4服务。

当前端通过负载获取到ids4 的 token 后,再次通过负载进行鉴权。就有可能找到另外一台服务器,从而鉴权失败。

解决方案:

IdentityServer 集群的铁律(重点)

🚨 所有 IdentityServer 节点必须使用同一套签名证书

这样 使token 无论找到哪台服务器都应该鉴权通过。

1. 生成证书

使用管理员权限 打开Power shell

执行

New-SelfSignedCertificate `
 -Subject "CN=idsrv" `
 -KeyAlgorithm RSA `
 -KeyLength 2048 `
 -CertStoreLocation "Cert:\CurrentUser\My" `
 -KeyExportPolicy Exportable

这样会生成一个key

Thumbprint                                Subject
----------                                -------
FA26780436B953E841C6BF4AA8496EB3C96C47FB  CN=idsrv

把它记录下来

也可以通过以下命令查看

Get-ChildItem Cert:\CurrentUser\My

保存下来,执行命令

$pwd = ConvertTo-SecureString -String "123456" -Force -AsPlainText

Export-PfxCertificate  -Cert "Cert:\CurrentUser\My\FA26780436B953E841C6BF4AA8496EB3C96C47FB"  -FilePath C:\idsrv.pfx  -Password $pwd

C:\idsrv.pfx 文件放在项目中,修改属性,始终复制到输出目录,这样发布后的文件夹就有这个文件了。

项目中的引用

在 *.HttpApi.Host 项目中,ConfigureServices()方法 里面

using System.IO;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.Hosting;

public override void ConfigureServices(ServiceConfigurationContext context)
{
    var env = context.Services.GetHostingEnvironment();

    var certDir = Path.Combine(env.ContentRootPath, "certs");
    var certPath = Path.Combine(certDir, "idsrv.pfx");

    // ===== 1️⃣ 检查目录 =====
    if (!Directory.Exists(certDir))
    {
        throw new Exception($"证书目录不存在: {certDir}");
    }

    // ===== 2️⃣ 检查文件 =====
    // ===== 3️⃣ 加载证书 =====
if (File.Exists(certPath))
{
    var certificate = new X509Certificate2(
        certPath,
        "123456",
        X509KeyStorageFlags.MachineKeySet |
        X509KeyStorageFlags.PersistKeySet |
        X509KeyStorageFlags.Exportable
    );

    identityServerBuilder.AddSigningCredential(certificate);
}
else
{
    // 仅开发环境 fallback
    identityServerBuilder.AddAbpDeveloperSigningCredential();
}

    context.Services
        .AddIdentityServer()
        .AddSigningCredential(certificate);
}

修改dockerfile 

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base

MAINTAINER lihongyuan
LABEL description="this is a test website"
LABEL version="1.0"

WORKDIR /app

# 复制程序
COPY . .

# ⭐ 确保证书权限正确(关键)
RUN chmod 644 /app/certs/idsrv.pfx || true

EXPOSE 80

ENTRYPOINT ["dotnet", "RailCDE.HttpApi.Host.dll"]

访问测试

http://10.5.45.104:3147/railback/.well-known/openid-configuration/jwks

end.