【问题标题】:OAuth 2.0 Single-use Access Token for unauthenticated user via IdentityServer4通过 IdentityServer4 为未经身份验证的用户提供 OAuth 2.0 一次性访问令牌
【发布时间】:2016-06-18 07:36:26
【问题描述】:

对于不正确使用 oauth 条款,我提前道歉

我有 4 个“当事人”,如下所示(尽可能不使用 oauth 术语):

  • 浏览器中的最终用户(javascript)
  • 我们的网站(aspnet)
  • 我们的网络 API (aspnet)
  • 我们的身份验证服务器(aspnet 利用身份服务器 4)

我的使用场景是,我们只希望 API 被首先从网站请求页面的浏览器调用。虽然 API 不会发布敏感信息,但我们想引入一层关于被垃圾邮件发送的 API 的复杂性。

我们的最终用户将不会登录

我想这样的流程是相似的:

  1. 浏览器从网站请求某个页面(可能会导致 js 进行 api 调用)
  2. 网站从身份验证服务器请求令牌
  3. 身份验证服务器验证令牌请求来自网站(服务器本身)
  4. 身份验证服务器向网站返回令牌
  5. 网站返回包含访问令牌的页面
  6. 浏览器能够使用令牌向 api 发出请求

虽然令人费解,但我相信这至少类似于客户端访问授权流程?

然后这些令牌可以由网站或身份验证服务器限制

是的,我知道这并不能保护 api 免受许多其他向量的影响,但它确实消除了最简单的情况,而这正是我们现在想要实现的。我要补充一下,我没有定义这个要求,我只是想找到一种方法来利用那里的技术来实现它,而不是犯下我自己推出任何东西的错误。

有人可以确认/否认我可以在这里使用 oauth 流程吗?任何使用给定流程和 IdentityServer 的示例项目?

IdentityServer3 / non-aspnet[core/5] 例子都可以,我可以翻译

【问题讨论】:

    标签: oauth-2.0 asp.net-core identityserver4


    【解决方案1】:

    您描述的是Client Credentials Grant,您的网站(客户端)在其中从身份服务器(身份验证服务器)获取访问令牌。然后,该访问令牌可用于调用 Web API(资源服务器)上的端点。

    令牌是不记名令牌,任何拥有它的人都可以使用,因此,如果您对自己的网站通过 HTTP 响应将其传递回浏览器感到满意,那么它就可以正常工作。

    我不确定您所说的限制令牌是什么意思 - 一旦铸造,它们将在其生命周期内有效。我想你可以保持很短的生存时间来实现你想要的单次使用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 2012-01-18
    • 2015-11-04
    • 2012-04-11
    • 2017-09-11
    • 2016-11-30
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多