title: Creating a "pre-signed/tokenized" URL which skips the login step (Json Web Tokens)
body: <p>I'm working on an application where an administrator will send a unique link to a user for them to fill out a form. The system requires authentication in order to fill out a form, however I would like this unique link to "skip" the login step for the user. ie when the user receives the link, they can simply click it and fill out the form without logging in, but behind the scenes the user is actually authenticated with a Json Web token. Ideally I would like the link to never expire, or possibly after 1 year so the user could use the link 6  months down the road and the link will seamlessly still work for the user.</p>
  
  <p>The most obvious solution would be to generate a JWT token with a lengthy expiry  when the admin generates the link and just include the token in the url that is sent to the user. When the user receives the link, they already have a JWT token so they don't need to login. However this feels like it may be insecure because now the user has a JWT token for their user with a long expiry sitting in their email inbox. </p>
  
  <p>I think I might be able to include information in the JWT token that would restrict it for that specific purpose (filling out the form), but I'm not even sure if I'm on the right path here.</p>
  
  <p>What is the best way to do this, is there any other recommended ways to create sort of a "pre-signed" url that skips the login step?</p>
  
  <p>I'm using ASP.NET Core as the backend, but I'm not sure if it's relevant as this is more of a general authentication / JWT problem.</p>