Oauth2:根据电子邮件中不可猜测的 url 授权访问

Oauth2: authorize access based on unguessable url in email

我们的应用程序使用 oauth2 & openid connect 进行身份验证和身份验证。它是使用调用 REST API 的 angular 客户端构建的。我想知道如何根据不可猜测的 url 的所有权来授权访问 API。

我再解释一下。在应用程序中,一个用户可以邀请另一个用户。发生这种情况时,会向第二个用户发送一封电子邮件。当用户 2 单击电子邮件中的 link 时,他将被发送到包含有关邀请的详细信息的网页。

只应允许用户 2 查看邀请页面。我打算通过在电子邮件中使用 'unguessable url' 来解决这个问题。访问 url 后,用户必须以某种方式获得授权才能从 API.

获取邀请详细信息

问题:我如何在知道不可猜测的情况下授权用户?url?我如何在页面加载时分配声明,以及如何我如何在随后的 API 调用中验证此声明?我看到的唯一解决方案是设置一个包含令牌的 cookie。但是这不符合我们现有的授权机制。我不想编写自己的令牌验证代码,而是让身份提供者处理它。

附加信息:用户 2 在系统中可能有也可能没有帐户,他可能已登录也可能没有登录。两者都不应该阻止用户看到邀请详细信息。换句话说:完全未知的用户应该能够看到该页面。 url的知识应该是唯一的要求。

这个问题有什么解决办法吗?还是我处理错了?

四处询问后,普遍的共识是不要让外部身份验证机制来处理这个问题,而是要我们自己验证 link。

解决办法是将url('link id')不可猜测的部分变成某种令牌,调用API时可以验证。这是由 API 本身完成的,而不是由身份服务器完成的。

应用于邀请问题:创建邀请时,存储 link id 和一些信息,即它允许什么样的访问(邀请访问)和邀请的 id。当用户调用 API 获取邀请时,传递 link id 进行验证。将邀请 ID 与存储在 link 中的邀请 ID 匹配,如果不匹配,则抛出错误。