本文使用的是"Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.3",IdentityServer的其他实现方式可能与本文不同。
由于IdentityServer4需要使用RSA加密,所以需要一个证书。
证书如何做,参考这篇文章:IdentityServer4部署到服务器,配置证书问题,即OpenSSL自制RSA证书。
主要包括:
1、安装OpenSSL工具 ,官网下载地址:https://slproweb.com/products/Win32OpenSSL.html
2、在CMD中执行以下命令
openssl req -newkey rsa:2048 -nodes -keyout cas.clientservice.key -x509 -days 365 -out cas.clientservice.cer
"IdentityServer": {
"Key": {
"Type": "File",
"FilePath": "C:\cert.pfx",
"Password": "password123"
}
}
"IdentityServer": { "Key": { "Type": "Store", "StoreName": "My", "StoreLocation": "CurrentUser", "Name": "CN=MyApplication" } }
这其实也是适用于windows系统的,证书安装后,会放在计算机中,正确配置上面的参数即可调取。
Type是固定的,使用Store。
StoreName就是证书逻辑存储名(存储区),一般默认安装会安装到My,对应“个人”。
StoreLocation是两种:(CurrentUser
或 LocalMachine
),看你当时安装时候的选择了。
Name,官方解释是证书上的名称属性对应于证书的可分辨主题,到底是啥??其实就是前面制作证书时候你自己配置的那些公司等等的参数。
用以下代码(根据你自己的情况稍作调整)可以把Name列出,完全贴到Name配置中即可。
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);//获取本地计算机受信任的根证书的储存区 store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;//获取储存区上的所有证书 //X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByIssuerName, "baiyi", false);//找到所有baiyi颁发的证书 X509Certificate2Collection fcollection = (X509Certificate2Collection)collection;//找到所有本地的个人证书 foreach (var item in collection) { Console.WriteLine(item.SubjectName.Name); }
最后注意:
1、按照本文方案,只需要在appsettings.json中进行配置,不必在Startup.cs中配置,配置了也没用;
2、File和Store的方案使用其中一个即可,File方案应该是不需要安装(丢了咋办?)。
ASP.NET Core+SPA+IdentityServer4部署时出现的Key Type
原文:https://www.cnblogs.com/wzhao666/p/12712903.html