通过 IdentityServer4 为未经身份验证的用户提供 OAuth 2.0 一次性访问令牌

OAuth 2.0 Single-use Access Token for unauthenticated user via IdentityServer4

对于错误使用 oauth 条款,我提前表示歉意

我有 4 个 "parties" 如下(故意尽可能不使用 oauth 条款):

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

我们的最终用户将不登录

我想象这样的流程类似于:

  1. 浏览器从网站请求特定页面(可能导致 js 进行 api 调用的页面)
  2. 网站从授权服务器请求令牌
  3. Auth 服务器验证令牌请求来自网站(服务器本身)
  4. 授权服务器returns网站令牌
  5. 网站 returns 页面包含访问令牌
  6. 浏览器能够使用令牌
  7. 向api发出请求

虽然很费解,但我认为这至少类似于客户端访问授权流程?

然后这些令牌可以被网站或授权服务器限制

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

有人 confirm/deny 可以告诉我这里有一个 oauth 流程吗?使用给定流程和 IdentityServer 的任何示例项目?

IdentityServer3 / non-aspnet[core/5]例子没问题,我可以翻译.

您所描述的是 Client Credentials Grant 您的网站(客户端)从身份服务器(身份验证服务器)获取访问令牌的地方。该访问令牌随后可用于调用您网络上的端点 API(资源服务器)。

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

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