问题标签 [identityserver4-extension-grants]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
450 浏览

identityserver4 - 没有主题的 Identity Server 4 扩展授权

我按照他们在文档中所做的方式创建了一个委托扩展授权。( https://identityserver4.readthedocs.io/en/latest/topics/extension_grants.html )

在示例中,他们从声明中获取用户的身份并返回授权验证结果,如下所示:

我的问题是,当我需要使用委托授权时,我并不总是有一个主题(即用户身份)。在我的场景中,我有一个监听消息的应用程序。当应用程序收到消息时,它会使用 client_credentials 调用 API。然后,该 API 使用委托授权类型调用子 API。由于该应用程序使用的是 client_credentials,因此声明中没有“子”。

我尝试检查“sub”声明是否存在,如果不存在,请将 GrantValidationResult 的主题设置为 IUserStore 的 FindByIdAsync 将查找的“神奇”guid,并返回 null 或新的空 TUser。在这两种情况下,这都会导致 Microsoft.AspNetCore.Identity 进一步轰炸管道。

如何返回带有当前声明的 GrantValidationResult,但不存在不存在的主题?

0 投票
1 回答
296 浏览

angular - 将自定义标头设置为 angular-auth-oidc-client 令牌/结束会话调用

我知道您可以将自定义参数添加到授权调用中:

如何添加自定义请求标头?我正在使用 response_type: 'code'。这里没有提到这个https://www.npmjs.com/package/angular-auth-oidc-client 任何帮助表示赞赏。谢谢

0 投票
0 回答
94 浏览

asp.net-core - 微前端的 IdentityServer4 访问令牌

我正在为我的一个使用 IdentityServer4、ASP.NET Core 和 Angular 的 Web 应用程序开发安全解决方案,并且想知道我认为的方法是否正确。

该应用程序具有可以加载多个 SPA(微前端)的 Shell 接口(在 Angular 中作为单页应用程序开发的客户端)。此 App Shell 负责与 IdentityServer4 通信的身份验证。用户可以选择将作为子应用加载到 App Shell 中的微前端 (MFE) 之一。App Shell 和 MFE 都是 IdentityServer4 中的客户端。步骤顺序如下:

  1. 用户将获得一个登录页面以登录到 App Shell 界面。
  2. 一旦用户登录,IdentityServer4 就会提供一个 ID 令牌和一个访问令牌(仅适用于 App Shell)。在这个阶段,我们不知道用户会预先将哪个微前端加载到 App Shell 中。
  3. 然后 App Shell 将加载所有可供用户选择的 MFE。
  4. 这些 MFE 中的每一个都有其相关的微服务。
  5. 每个用户都将拥有与该 MFE 相关的特定权限集。例如:一。对于微前端“A”,用户“X”可以拥有“项目经理”角色相关权限 b.对于微前端“B”,同一个用户“X”可以拥有“Guest User”角色相关权限。
  6. 由于这些 MFE 中的任何一个都可以根据用户选择按需加载,并且根据“最小权限原则”,我们不想在登录时生成的访问令牌中添加所有 MFE 相关范围(来自第2步)。
  7. 当 MFE 加载到 App Shell 中时,使用来自令牌端点的“自定义授权”请求新的访问令牌。
  8. 与该 MFE 及其相关微服务的进一步交互将使用上述访问令牌(在步骤#7 中生成)进行控制。
  9. 如果用户卸载 MFE,则与其关联的访问令牌将被丢弃。
  10. 如果用户选择另一个 MFE,则从步骤#7 开始重复该过程。基本上,在任何时候,我们都会有两个访问令牌,一个用于 App Shell,另一个用于加载的 MFE。我们想知道我们在第 6 步中实施的方法是否符合安全最佳实践。

感谢有关上述方法的任何建议或解决我们问题的任何其他替代方案。