IdentityServer:客户端级别的模拟

Posted

技术标签:

【中文标题】IdentityServer:客户端级别的模拟【英文标题】:IdentityServer: Impersonation at Client Level 【发布时间】:2017-08-28 07:26:19 【问题描述】:

我需要能够在应用程序/客户端级别模拟用户。 用例如下:

用户决定公开共享仪表板(包含非常频繁刷新的数据、自定义组织......) 用户将链接发送给其他人(其他人可能不是我的应用程序的用户)。该链接包含仪表板的 ID 和一些令牌,以防止人们只是尝试一下。 当接收方浏览到该链接时,我们会验证仪表板是否存在并且公共共享以及令牌是否已激活。 然后,根据仪表板配置,我们需要调用我们的 API(使用 Bearer 令牌)以获取仪表板的最新数据。 我希望客户端应用能够模拟仪表板的“所有者”,以便能够调用其名称上的 API 来获取数据。

我阅读了其他问题/票证,但他们都提到了一个用户冒充另一个用户,但我找不到任何证据表明实际上可以做我正在寻找的事情。

你能把我带到正确的方向吗?

编辑:我想说我不希望仪表板链接的接收者看到任何登录屏幕,这对他来说应该是完全透明的

【问题讨论】:

【参考方案1】:

我们找到了实现我们需要的方法。

基于 this post 和那里引用的示例,我们使用了 CustomGrant 验证器。

【讨论】:

【参考方案2】:

听起来您需要一个服务器应用程序来授权为所有者。在服务器上,您可以为授权保密,但不能在客户端。 然后,服务器应用程序可以有一个自定义授权客户端,它代表所有者获取访问令牌,并在仪表板公开时使用它来调用数据 API。

这是 OAuth2.0,顺便说一句,而不是 OIDC。

【讨论】:

以上是关于IdentityServer:客户端级别的模拟的主要内容,如果未能解决你的问题,请参考以下文章

谁为 Identity Server 4 提供客户端 ID 和客户端密码?

在IdentityServer4中限制用户级别的api资源

我可以在没有客户端密码的情况下使用带有 PKCE 的 IdentityServer3 授权代码流吗?

IdentityServer4 作为 Web API

Blazor IdentityServer 身份验证

IdentityServer4 结合 Mysql 之初体验