OIDC signature verification

南楼画角 提交于 2020-06-29 04:29:06

问题


We are testing our own OIDC-IDP with a commercial client. (We don't have access to the clients code.) After some tests, the client always returns

OpenID Connect token validation failed: Token signature invalid (ID_TOKEN)

The IDP is in the wild of the web, the client is in our own network with a SSL breaker in between. We have a test client, also in the WWW, which works fine.

My question is, which certificate does the OIDC-client use to verify the signature. Is it the certificate of the website of the IDP? If so could it be that the reason for this error, is the ssl-breaker replacing the original certificate?


回答1:


Note about OIDC lingo

  • OpenId Provider (OP) is analogous to SAML2 IdP
  • Relying Party (RP) is analogous to SAML2 SP

I knew what you were referring to when you wrote "IdP" and "client", but I want to mention that you'll commonly see OP and RP used for OIDC documentation / discussions.

Context and suggestions

The commercial RP you're testing with states that signature verification of the ID Token (i.e. JWT) is failing. To specifically answer your question, no, it is not using the x509 cert from the OP website to verify the signature. The key the RP uses to verify signature will depend on whether you've configured your OP to sign ID Tokens using:

  • HS256 (symmetric key algorithm); or
  • RS256 (asymmetric key algorithm)

Please have a look at the accepted answer on this thread for context: RS256 vs HS256: What's the difference?

In the former case (HS256), your OP signs the ID Token with a secret key. And your RP must verify the signature using that same secret key. (NB: as you probably know, it's important to keep this shared secret key safe and secure.) If this is your environment, perhaps the commercial RP has a configuration option that allows you to upload or copy/paste in the secret key.

In the latter case (RS256), your OP signs the ID Token with a private key, but your RP verifies the signature using its public key counterpart. If this is your environment, perhaps the commercial RP has a configuration option to specify "jwks_uri" and "kid". These refer to the URI that your public key is published to, and its key ID, respectively.



来源:https://stackoverflow.com/questions/54979408/oidc-signature-verification

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!