title: Namespaces for .NET JWT token validation: System vs. Microsoft
body: <p>I am trying to use JWT to authenticate a Node application to an ASP.NET Web API.</p>
  
  <p>In ASP.NET, I am using .NET 4.5.1 and nuget package <code>System.IdentityModel.Tokens.Jwt</code> 5.0.0</p>
  
  <p>What I don't understand is, why the namespaces are mixed between <code>Microsoft</code> and <code>System</code>.  </p>
  
  <p>For example:</p>
  
  <pre><code>var tokenReader = new JwtSecurityTokenHandler();
  
  tokenReader.ValidateToken(token, 
                  new TokenValidationParameters()
              {
                  ValidateAudience = false
              },
                  out validatedToken);    
  </code></pre>
  
  <p>The main <code>JwtSecurityTokenHandler</code> is in the <code>System.IdentityModel.Tokens.Jwt</code> namespace, but the <code>TokenValidationParameters</code> class and its dependencies are in the <code>Microsoft.IdentityModel.Tokens</code> namespace, and possibly collide with similar classes in the <code>System.IdentityModel.Tokens</code> namespace.</p>
  
  <p>Is this by design or is this a possible sign of a version mismatch somewhere else?</p>