SOLVED

Azure Ad Token missing 'jti' claim

%3CLINGO-SUB%20id%3D%22lingo-sub-2210776%22%20slang%3D%22en-US%22%3EAzure%20Ad%20Token%20missing%20'jti'%20claim%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2210776%22%20slang%3D%22en-US%22%3E%3CP%3EI'm%20sending%20a%20token%20generated%20from%20an%20App%20registration%20in%20Azure%20to%20another%20application.%20The%20application%20has%20thrown%20an%20error%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3EJWT%20ID%20(jti)%20claim%20missing%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAny%20idea%20why%20Azure%20does%20not%20use%20the%20jti%20claim%20in%20it's%20tokens%3F%20or%20how%20to%20enable%20this%20claim%3F%3C%2FP%3E%3CP%3ETIA%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2210776%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EAzure%20AD%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
New Contributor

I'm sending a token generated from an App registration in Azure to another application. The application has thrown an error 

 

 

 

JWT ID (jti) claim missing

 

 

 

Any idea why Azure does not use the jti claim in it's tokens? or how to enable this claim?

TIA

1 Reply
best response confirmed by james1275 (New Contributor)
Solution

There are 2 specifications at play here:

https://tools.ietf.org/html/rfc7521#section-5.1 
https://tools.ietf.org/html/rfc7519#section-4.1.7


Assertion flow should have some “Assertion ID”
and JWT’s can optionally have a JWT ID. They don’t really appear to reference each other explicitly, but it makes sense to use them together.

 
 

 

Assertion ID
      A nonce or unique identifier for the assertion.  The Assertion ID
      may be used by implementations requiring message de-duplication
      for one-time use assertions.  Any entity that assigns an
      identifier MUST ensure that there is negligible probability for
      that entity or any other entity to accidentally assign the same
      identifier to a different data object.

 

 

 

4.1.7.  "jti" (JWT ID) Claim   The "jti" (JWT ID) claim provides a unique identifier for the JWT.
   The identifier value MUST be assigned in a manner that ensures that
   there is a negligible probability that the same value will be
   accidentally assigned to a different data object; if the application
   uses multiple issuers, collisions MUST be prevented among values
   produced by different issuers as well.  The "jti" claim can be used
   to prevent the JWT from being replayed.  The "jti" value is a case-
   sensitive string.  Use of this claim is OPTIONAL.

 

 

It appears MSFT have opted to call their Assertion ID claim nonce instead of jti