创建跳过登录步骤的"pre-signed/tokenized" URL(Json Web 令牌)



我正在开发一个应用程序,管理员将向用户发送一个唯一的链接,供他们填写表单。系统需要身份验证才能填写表单,但是我希望这个独特的链接"跳过"用户的登录步骤。即当用户收到链接时,他们可以简单地单击它并填写表单而无需登录,但在后台,用户实际上是使用 Json Web 令牌进行身份验证的。理想情况下,我希望链接永不过期,或者可能在 1 年后过期,以便用户可以在 6 个月后使用该链接,并且该链接仍然可以无缝地为用户工作。

最明显的解决方案是在管理员生成链接时生成一个过期时间很长的 JWT 令牌,并且只需将令牌包含在发送给用户的 URL 中。当用户收到链接时,他们已经拥有 JWT 令牌,因此无需登录。但是,这感觉可能不安全,因为现在用户有一个JWT令牌,他们的电子邮件收件箱中有一个很长的过期时间。

我想我也许能够在 JWT 令牌中包含出于特定目的(填写表格)限制它的信息,但我什至不确定我是否在这里走在正确的道路上。

最好的方法是什么,是否有其他推荐的方法来创建跳过登录步骤的"预签名"URL?

我正在使用 ASP.NET Core作为后端,但我不确定它是否相关,因为这更像是一个一般的身份验证/JWT问题。

无论您采取什么预防措施,任何掌握电子邮件的人都会进行身份验证。我会考虑PGP(或类似)向用户发送电子邮件。

最新更新