通过 IdentityServer4 为未经身份验证的用户提供 OAuth 2.0 一次性访问令牌
OAuth 2.0 Single-use Access Token for unauthenticated user via IdentityServer4
对于错误使用 oauth 条款,我提前表示歉意。
我有 4 个 "parties" 如下(故意尽可能不使用 oauth 条款):
- 最终用户在浏览器中 (javascript)
- 我们的网站(aspnet)
- 我们的网站 api (aspnet)
- 我们的身份验证服务器(使用身份服务器 4 的 aspnet)
我的使用场景是,我们只希望 API 被首先从网站请求页面的浏览器调用。虽然 API 不会发布敏感信息,但我们想在 API 被垃圾邮件方面引入一层复杂性。
我们的最终用户将不登录。
我想象这样的流程类似于:
- 浏览器从网站请求特定页面(可能导致 js 进行 api 调用的页面)
- 网站从授权服务器请求令牌
- Auth 服务器验证令牌请求来自网站(服务器本身)
- 授权服务器returns网站令牌
- 网站 returns 页面包含访问令牌
- 浏览器能够使用令牌
向api发出请求
虽然很费解,但我认为这至少类似于客户端访问授权流程?
然后这些令牌可以被网站或授权服务器限制。
是的,我知道这并不能保护 api 免受许多其他向量的影响,但它确实消除了我们希望实现的最简单的情况目前。我要补充一点,我没有定义这个要求,我只是想找到一种方法来利用那里的技术来实现它,而不是犯下我自己推出任何东西的错误。
有人 confirm/deny 可以告诉我这里有一个 oauth 流程吗?使用给定流程和 IdentityServer 的任何示例项目?
IdentityServer3 / non-aspnet[core/5]例子没问题,我可以翻译.
您所描述的是 Client Credentials Grant 您的网站(客户端)从身份服务器(身份验证服务器)获取访问令牌的地方。该访问令牌随后可用于调用您网络上的端点 API(资源服务器)。
该令牌是不记名令牌,任何拥有它的人都可以使用,因此如果您对网站通过 HTTP 响应将其传回浏览器感到满意,那么它就可以正常工作。
我不确定您所说的限制令牌是什么意思 - 一旦铸造,它们就在其生命周期内有效。我想你可以保持很短的生存时间来实现你想要的单次使用。
对于错误使用 oauth 条款,我提前表示歉意。
我有 4 个 "parties" 如下(故意尽可能不使用 oauth 条款):
- 最终用户在浏览器中 (javascript)
- 我们的网站(aspnet)
- 我们的网站 api (aspnet)
- 我们的身份验证服务器(使用身份服务器 4 的 aspnet)
我的使用场景是,我们只希望 API 被首先从网站请求页面的浏览器调用。虽然 API 不会发布敏感信息,但我们想在 API 被垃圾邮件方面引入一层复杂性。
我们的最终用户将不登录。
我想象这样的流程类似于:
- 浏览器从网站请求特定页面(可能导致 js 进行 api 调用的页面)
- 网站从授权服务器请求令牌
- Auth 服务器验证令牌请求来自网站(服务器本身)
- 授权服务器returns网站令牌
- 网站 returns 页面包含访问令牌
- 浏览器能够使用令牌 向api发出请求
虽然很费解,但我认为这至少类似于客户端访问授权流程?
然后这些令牌可以被网站或授权服务器限制。
是的,我知道这并不能保护 api 免受许多其他向量的影响,但它确实消除了我们希望实现的最简单的情况目前。我要补充一点,我没有定义这个要求,我只是想找到一种方法来利用那里的技术来实现它,而不是犯下我自己推出任何东西的错误。
有人 confirm/deny 可以告诉我这里有一个 oauth 流程吗?使用给定流程和 IdentityServer 的任何示例项目?
IdentityServer3 / non-aspnet[core/5]例子没问题,我可以翻译.
您所描述的是 Client Credentials Grant 您的网站(客户端)从身份服务器(身份验证服务器)获取访问令牌的地方。该访问令牌随后可用于调用您网络上的端点 API(资源服务器)。
该令牌是不记名令牌,任何拥有它的人都可以使用,因此如果您对网站通过 HTTP 响应将其传回浏览器感到满意,那么它就可以正常工作。
我不确定您所说的限制令牌是什么意思 - 一旦铸造,它们就在其生命周期内有效。我想你可以保持很短的生存时间来实现你想要的单次使用。