OpenIddict 配置指南
本文档介绍如何在 AuthServer 项目中配置 OpenIddict。
AuthServer 项目针对 开发 和 生产 环境提供了不同的配置方案。
如果您的解决方案中不包含名为
.AuthServer的项目,则意味着您可能拥有另一个依赖于AbpAccountPublicWebOpenIddictModule的项目。项目名称可能是MyProject、MyProject.Web或MyProject.HttpApi.Host。在这些情况下,它们都属于认证服务器项目。
public override void PreConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
if (!hostingEnvironment.IsDevelopment())
{
PreConfigure<AbpOpenIddictAspNetCoreOptions>(options =>
{
options.AddDevelopmentEncryptionAndSigningCertificate = false;
});
PreConfigure<OpenIddictServerBuilder>(serverBuilder =>
{
serverBuilder.AddProductionEncryptionAndSigningCertificate("openiddict.pfx", "00000000-0000-0000-0000-000000000000");
});
}
}
开发环境
在开发环境中,默认启用 AddDevelopmentEncryptionAndSigningCertificate 功能。它会注册(并在必要时生成)用户特定的开发加密/开发签名证书。此证书用于令牌的签名和加密,且仅适用于开发环境。
AddDevelopmentEncryptionAndSigningCertificate 不能在部署于IIS或Azure应用服务的应用程序中使用:尝试在IIS或Azure应用服务上使用会导致运行时抛出异常(除非应用程序池配置为 加载用户配置文件)。
为避免这种情况,请考虑创建自签名证书并将其存储在主机的 X.509 证书存储中。这是我们在生产环境中采用的实现方式。
生产环境
在生产环境中禁用 AddDevelopmentEncryptionAndSigningCertificate 功能。证书的签名和加密使用生产环境中的 openiddict.pfx 文件完成。
您可以使用 dotnet dev-certs https -v -ep openiddict.pfx -p 00000000-0000-0000-0000-000000000000 命令生成 openiddict.pfx 证书。
openiddict.pfx仅为文件名示例,您可以为pfx文件使用任意文件名。
00000000-0000-0000-0000-000000000000是证书密码,您可以将其更改为任意所需密码。
同时,请记得将
openiddict.pfx复制到AuthServer网站的 内容根目录 。
建议使用两个RSA证书,且与HTTPS使用的证书区分开:一个用于加密,一个用于签名。
如果在IIS上部署时遇到文件未找到错误(即使文件确实存在),建议将应用程序池的高级设置中的加载用户配置文件设为True来解决此问题。
对于IIS部署,可以在
AddProductionEncryptionAndSigningCertificate方法中设置X509KeyStorageFlags.MachineKeySet和X509KeyStorageFlags.EphemeralKeySet标志。例如:
serverBuilder.AddProductionEncryptionAndSigningCertificate(
"openiddict.pfx",
"your-password",
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet);
抠丁客


