代码之家  ›  专栏  ›  技术社区  ›  Anton

IdentityServer 3签名证书到期

  •  5
  • Anton  · 技术社区  · 7 年前

    当使用IdentityServer 3时,签名证书(用于签名jwt令牌)过期时会发生什么?

    https://identityserver.github.io/Documentation/docsv2/configuration/events.html )


    当验证由过期证书签名的令牌时,客户端(客户端是使用IdentityServer进行身份验证的Web API)会发生什么情况?(例如,如果 https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation 用作中间件。)

    2 回复  |  直到 7 年前
        1
  •  3
  •   Matt    7 年前

    我刚刚测试了这个(在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
  •  0
  •   Heinzlmaen    4 年前

    免责声明:我从未使用过IdentityServer3

    外部世界不知道您的证书,因此不知道它已过期。外部世界只会在以下位置看到您的公钥:

    YourIdentityServer.com/.well-known/openid-configuration
    

    或者更准确地说:

    YourIdentityServer.com/.well-known/openid-configuration/jwks
    

    您可以在启动时创建一个新的证书(请参阅 https://gist.github.com/mykeels/408a26fb9411aff8fb7506f53c77c57a

    https://docs.identityserver.io/en/dev/topics/crypto.html#signing-key-rollover