密钥,签名和加密


layout: docs-default

密钥,签名和加密

IdentityServer在几个地方依赖于加密,下面是简单介绍:

加密传输(HTTPS)

IdentityServer默认要求所有请求都通过HTTPS,只通过安全传输机制和IdentityServer通信是强制要求。
当然在一些特定的场景,比如SSL被卸载, 可以稍微放宽点要求。请看部署 了解更多信息.

SSL/TLS是在托管程序里面配置的---比如IIS或者直接用HTTP.SYS.

令牌签名

身份令牌和JWT访问令牌通过RSA算法(RS256),使用X.509证书签名。签名证书在IdentityServerOptionsSigningCertificate属性设置。这个属性对于身份令牌和JWT访问令牌是必须设置的。
如果用的是参考令牌,可以不设置签名证书。

备注 密钥长度不能小于2048 字节.

签名密钥轮转

X.509证书是有生存期的,不停机更新和轮换签名密钥是一件苦难的事情。好消息是,IdentityServer有一些特性可以让它别的简单些。

  • 发现文档会公布当前的公开密钥(和备用密钥). 令牌使用者可以从中了解密钥的一些信息。
  • 所有的JWT令牌都包含一个密钥标识,这个标识和发现文档里的一一对应。
  • 访问令牌验证中间件周期(每24小时)检查发现文档来更新密钥配置。

密钥轮换步骤基本如下:

  1. 拿到一个新的证书替换旧的。
  2. 在选项中把这个新的证书设置为SecondarySigningCertificate。 现在IdentityServer会把新旧两个证书都公布在发现文档中,访问令牌验证中间件可以处理被任一证书加密的令牌。
  3. 等待24小时,等所有的客户端都已经更新配置了。
  4. 把新的证书设置为主SigningCertificate. 移除旧的证书。

Cookie 保护

Cookies同样需要保护,IdentityServer使用Katana数据保护机制来实现它。如果IIS托管我们的应用。Katana会使用ASP.NET的机器密钥来保护所有的cookies。如果部署在web farm上,那么需要手动同步所有节点上的密钥。
如果是自托管,可以接入自定义的Katana数据保护插件或者使用IdentityServer的基于X.509证书的数据保护器。

你可能感兴趣的:(密钥,签名和加密)