gpt4 book ai didi

openid-connect - WebAPI 混合隐式流和客户端凭证流

转载 作者:行者123 更新时间:2023-12-05 07:49:31 24 4
gpt4 key购买 nike

我有一个 WebAPI 解决方案,它通过 [Authorize] 属性保护它的 Controller 方法。它验证给定用户是否具有适当的角色,这些角色基本上是来自 IdentityServer3 的声明。

有几个单页应用程序客户端与此 WebAPI 交互,客户端用户使用隐式流进行身份验证/授权。

到目前为止非常标准和简单,一切正常...

现在我需要后台进程来调用同一个 WebAPI。这实际上变成了机器对机器的通信。根据我阅读过的所有文档,这是客户端凭证流的情况。没有用户参与。

问题...

鉴于不涉及任何用户,这也意味着没有主题、没有声明,显然也没有角色。如果我没记错的话,客户没有 claim 。由于我的 Controller 方法受角色保护,那么如何授权这样的客户端使用服务/资源?

我读到客户端应该只有一个流,但是资源呢?客户端使用的流对资源不应该很重要,除了访问 token 将没有声明,具体取决于客户端流。因此,在这种情况下,当流受到声明的保护时,流也与资源相关。我糊涂了吗?

我应该专门为客户端凭证流创建一个新服务吗?操纵身份服务器以支持对客户端的声明?

我正在寻找最佳实践。

编辑

另请参阅此 Github 讨论... Issue 76

If the subject is null - there is no human involved.

We are not planning to have claims for clients. The client identity and scopes should be enough.

leastprivilege

另请参阅... Issue 79

Well - in general a client should only have one flow since it can result in security problems if the wrong combination of flows is configured (e.g. code and implicit).

leastprivilege

最佳答案

您可能不完全匹配客户端凭证流程中的用户角色声明(细粒度授权),但有一些解决方法:

  • 使用发给客户端的范围声明来做出授权决定(引用这个 Identity Server documentation - 特别是在 Registering a Web API 下)
  • 根据访问 token 中的受众(“aud”)声明,您可以放弃通常检查用户 token 的授权决定

另请查看 Token Introspection (以及 Dominick 发布的相关视频)以进一步了解。这也概述了资源服务器的作用。

关于openid-connect - WebAPI 混合隐式流和客户端凭证流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com