我想使用IdentityServer4为我的API资源定义2个不同的范围,类似于:https://identityserver4.readthedocs.io/en/release/configuration/resources.html#defining-api-resources。有一个端点我希望我的客户端应用程序能够在不需要用户登录的情况下点击,其余的端点将受到用户交互的完全保护(混合流fwiw)。
我认为我可以让它工作,因此任何一个流都可以访问API。我感到困惑的是上面演示的配置如何将客户端凭据流限制在有限的范围内?我不希望该流程能够达到API的全部范围。只有当用户登录时,他们才能访问其余的...一个不同的范围" API ...
这适用于本机/移动应用程序,因此客户端凭据的客户端密钥将嵌入到应用程序中。这就是为什么API的其余部分需要更好的保护。但是,如果IdentityServer4配置为允许资源的两种授权类型,那么有人能够发现该客户端密钥并在本机应用程序之外使用它来获取对API的其余部分的访问权限吗?如何将该授权类型限制在更受约束的范围内......?
答案 0 :(得分:1)
您将需要两个不同的客户端,每个客户端都有自己的资源配置(使用范围)。子声明可以被视为用户标识符声明,因此在客户端凭据流中没有位置,因为它是一个无用户的流。
答案 1 :(得分:0)
它看起来像是一个部分答案,或者是一个可以解决问题的答案"对于我的具体案例,可以在bottom of this page找到。客户端凭证令牌不会有" sub"声称,而资源所有者(我假设混合等)将。因此,在识别端点所需的权限时,可以使用它来区分这两者。在这种情况下,我对识别多个范围的价值感到困惑。