在Ubuntu系统上部署IdentityServer4.Admin项目并配置PostgreSQL数据库
前言
IdentityServer4.Admin是一个基于IdentityServer4的管理界面,提供了对身份认证服务器的可视化管理和配置功能。本文将详细介绍如何在Ubuntu 19.04系统上部署该项目,并将其默认的SQL Server数据库替换为PostgreSQL数据库。
环境准备
1. 安装.NET Core 3.1 SDK
在Ubuntu系统上运行IdentityServer4.Admin项目需要.NET Core 3.1运行环境。以下是安装步骤:
- 添加Microsoft包存储库
- 安装.NET Core SDK
执行以下命令完成安装:
wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
安装完成后,可以通过dotnet --version
命令验证安装是否成功。
2. 安装PostgreSQL数据库
IdentityServer4.Admin默认使用SQL Server,但我们可以轻松切换到PostgreSQL。以下是PostgreSQL的安装步骤:
sudo apt update
sudo apt install postgresql postgresql-contrib
安装完成后,PostgreSQL服务会自动启动。为了后续配置方便,我们需要修改默认的postgres用户密码:
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres';
项目配置
1. 获取项目代码
使用git命令获取项目源代码:
git clone https://github.com/skoruba/IdentityServer4.Admin
2. 数据库连接配置
项目默认使用SQL Server,我们需要修改为PostgreSQL:
- 修改
src/Skoruba.IdentityServer4.Admin/appsettings.json
文件 - 修改
src/Skoruba.IdentityServer4.STS.Identity/appsettings.json
文件
将原有的连接字符串替换为:
"ConnectionStrings": {
"ConfigurationDbConnection": "Server=localhost; User Id=postgres; Database=is4admin; Port=5432; Password=postgres; SSL Mode=Prefer; Trust Server Certificate=true",
"PersistedGrantDbConnection": "Server=localhost; User Id=postgres; Database=is4admin; Port=5432; Password=postgres; SSL Mode=Prefer; Trust Server Certificate=true",
"IdentityDbConnection": "Server=localhost; User Id=postgres; Database=is4admin; Port=5432; Password=postgres; SSL Mode=Prefer; Trust Server Certificate=true",
"AdminLogDbConnection": "Server=localhost; User Id=postgres; Database=is4admin; Port=5432; Password=postgres; SSL Mode=Prefer; Trust Server Certificate=true",
"AdminAuditLogDbConnection": "Server=localhost; User Id=postgres; Database=is4admin; Port=5432; Password=postgres; SSL Mode=Prefer; Trust Server Certificate=true"
}
3. 数据库提供程序配置
在以下项目的appsettings.json
文件中,修改数据库提供程序为PostgreSQL:
- Skoruba.IdentityServer4.Admin
- Skoruba.IdentityServer4.Admin.Api
- Skoruba.IdentityServer4.STS.Identity
修改内容如下:
"DatabaseProviderConfiguration": {
"ProviderType": "PostgreSQL"
}
项目运行
1. 启动STS身份服务
在项目目录src/Skoruba.IdentityServer4.STS.Identity
中执行:
dotnet run
STS服务将默认监听5000端口。
2. 启动Admin管理界面
在项目目录src/Skoruba.IdentityServer4.Admin
中执行:
dotnet run /seed
/seed
参数会初始化数据库并创建默认管理员账户。Admin服务将默认监听9000端口。
3. 访问管理界面
打开浏览器访问http://localhost:9000
,系统会自动重定向到STS服务进行身份验证。默认的管理员凭据可以在Skoruba.IdentityServer4.Admin
项目的identitydata.json
文件中找到。
安全注意事项
- 本文配置仅适用于开发和测试环境,生产环境需要额外的安全配置
- 默认的postgres用户密码过于简单,生产环境必须修改
- 建议为不同的服务配置不同的数据库用户,并限制其权限
- 生产环境应考虑启用SSL加密数据库连接
- 管理员账户密码应在首次登录后立即修改
常见问题解决
- 数据库连接失败:检查PostgreSQL服务是否运行,确认连接字符串中的用户名密码是否正确
- 端口冲突:可以在
appsettings.json
中修改ApplicationUrls
配置项来更改服务监听端口 - 迁移失败:确保已正确配置数据库提供程序类型,并安装了所有必要的NuGet包
通过以上步骤,您已成功在Ubuntu系统上部署了IdentityServer4.Admin项目,并将其配置为使用PostgreSQL数据库。这个配置为开发环境提供了一个良好的起点,但在投入生产使用前,请务必进行全面的安全评估和加固。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考