我知道IdentityServerOptions.SigningCertificate用于签署IDS提供的令牌。如果此证书在IDS之外可用,是否有任何关注?如果您有权访问此证书,是否可以制作访问令牌?
我们有一个产品,我们想知道是否应该在msi安装程序中发布预制的证书,或者我们需要运送sdk(或makecert)为每个客户生成一个唯一的。显然最简单的选择是运送预先准备好的选项,只是想了解风险。
答案 0 :(得分:1)
根据我的理解,您将在系统中分发IdentityServer的副本,因此您将拥有大量安装,每个安装都有自己的IdentityServer。
基本上IdentityServer需要访问私钥才能签署其令牌,因此如果您为所有安装提供相同的证书+私钥,那么理论上一个安装可以信任来自另一个的令牌。显然,令牌的内容也是相关的,但是看到这是你的系统,范围,索赔等在各种安装中都没有意义。
如果您将恶意人员添加到混合中,那么他们可以简单地选择令牌的内容并对其进行签名,他们甚至可以使用IdentityServer代码本身来执行此操作,因为它是开源的。
您应该考虑允许管理员加载pfx文件或配置证书存储中存在的签名证书。这两种方法都有各种各样的问题,这篇博文有一些关于你可能遇到的问题的好信息:
http://paulstovell.com/blog/x509certificate2
您还需要考虑如何续订证书,IdentityServer对此有很好的支持,这里的文档中的信息:
https://identityserver.github.io/Documentation/docsv2/configuration/crypto.html
编辑:
如果我的初始假设不正确,并且只有一个IdentityServer将由您控制,并且您只会分发公钥,那就没关系!以下是公钥与私钥及术语的详细解释:
https://security.stackexchange.com/questions/29425/difference-between-pfx-and-cert-certificates