【问题标题】:Oauth2: authorize access based on unguessable url in emailOauth2:根据电子邮件中不可猜测的 url 授权访问
【发布时间】:2016-04-05 09:53:38
【问题描述】:

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

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

应该只允许用户 2 看到邀请页面。我打算通过在电子邮件中使用“不可猜测的 url”来解决这个问题。访问该 url 后,用户必须以某种方式获得授权才能从 API 获取邀请详细信息。

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

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

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

【问题讨论】:

    标签: rest security oauth oauth-2.0 claims


    【解决方案1】:

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

    解决方案是将 url 中不可猜测的部分(“链接 ID”)转换为某种令牌,可以在调用 API 时进行验证。这是由 API 本身完成的,而不是由 Identity Server 完成的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2011-03-26
      • 2013-12-01
      相关资源
      最近更新 更多