2017-07-13 29 views
1

当使用IdentityServer 3签名证书(用于签署jwt令牌)到期时会发生什么情况?IdentityServer 3签名证书到期

目前还不清楚,我找不到任何文档,除此之外可能会发出已过期的警告。 (Ref。https://identityserver.github.io/Documentation/docsv2/configuration/events.html

是否有任何机制阻止使用过期的签名证书?
在验证由过期证书签名的令牌时,客户端(客户端是使用IdentityServer进行身份验证的Web API)会发生什么? (例如,如果https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation作为中间件)

回答

0

嗯,我刚刚测试了这个(上IdentityServer4),它似乎继续使用过期签名证书快乐工作,这是我的测试证书的有效性:

enter image description here

我可以登录,获取ID令牌和访问令牌,然后使用访问令牌访问API。什么IdentityServer但是没有做的是记录警告:

2017-07-13 12:15:54.871 +02:00 [Warning] 
    Certificate "CN=test_expired_signing_certificate" has expired on "13/07/2016 14:14:37" 

这符合什么IdentityServer(3)文档说here

IdentityServer提出了一些在运行时的事件,如:

喀嚓...

  • 过期/无效/没有签名证书

默认情况下,这些事件被转发到配置的日志提供程序 - 自定义事件服务可以以任何适合该环境的方式处理或转发它们。

所以这将是你的方式来检测它已经太晚了。一个更好的选择是周期性地在密钥的有效期内翻转签名密钥,这是一种常用的方法,如果必要的话还允许撤销密钥。见this issue这里讨论的过程,基本上IdentityServer可以处理两个密钥:

[中间件刷新]元数据文件...每天一次。

元数据文档可以保存2个键 - 主键和辅助键,并且中间件将在存在时加载和使用两个键(JWT具有允许选择正确键的键标识符)。

当你开始翻转 - 设置两个键和在某一点上交换主要和次要。

+0

我们似乎也得到相同的结果;一切都在继续工作。您是在本地验证令牌还是使用验证端点? – Anton

+0

就在本地使用中间件,其中的内容是微软的jwt持票人令牌验证(即这是IdentityServer使用的)。 – Matt