Asp.net web api JWT每个资源服务器有多个访问群体

Asp.net web api JWT每个资源服务器有多个访问群体,asp.net-web-api,oauth-2.0,owin,jwt,Asp.net Web Api,Oauth 2.0,Owin,Jwt,在花了几个小时研究使用OWIN在Web API中使用JWT之后,我仍然对受众的目的表示相当困惑。一些页面说,访问群体是将在其上验证令牌的资源服务器。其他人建议访问群体是访问资源服务器的客户机,并且经常将此值作为客户机id和访问群体互换地引用 根据JWT规范,受众似乎是资源服务器()。因此,我认为每个API应用程序不需要有超过一个访问者。但是,许多实现正在向单个Web API应用程序添加多个访问群体,而Microsoft的JWTBeareAuthenticationOptions实现也允许这样做

在花了几个小时研究使用OWIN在Web API中使用JWT之后,我仍然对受众的目的表示相当困惑。一些页面说,访问群体是将在其上验证令牌的资源服务器。其他人建议访问群体是访问资源服务器的客户机,并且经常将此值作为客户机id和访问群体互换地引用

根据JWT规范,受众似乎是资源服务器()。因此,我认为每个API应用程序不需要有超过一个访问者。但是,许多实现正在向单个Web API应用程序添加多个访问群体,而Microsoft的JWTBeareAuthenticationOptions实现也允许这样做

在这些实现中,他们可以互换地使用访问群体和客户机id(这里有一个例子:),我觉得这将资源服务器与客户机紧密地结合在一起,并在资源服务器上强制执行客户机声明。我觉得这是身份验证服务器的工作(因此能够根据JWT规范向令牌添加多个访问者声明)


我觉得我错过了一些重要的东西。我的目标是能够开发多个可供多个客户端使用的API,但必须在资源服务器和身份验证服务器上动态管理受众声明似乎违背了JWT的精神。然而,许多人已经以其他方式实现了它,甚至MS也允许每个资源服务器有多个访问群体,所以我希望这里能有一些明确的信息

受众识别代币的预期“消费者”。通常是应用程序(API)从客户端应用程序接收令牌

需要JWT的服务需要检查(并验证)
受众
,以防止某人发送(有效的)用于其他人的令牌


您可以想象这样一种情况,API-1API-2都使用基于角色的安全性,例如,用户获得API-1的声明admin。如果API-2没有检查
受众
,则用户有可能发送令牌(其中包含管理员声明)并成功(当它不应该发送时)。

因此,我认为受众需要验证,但是否有任何情况下,您可能认为每个API需要一个以上的受众?如果API是受众,为什么需要配置任何API来验证多个受众?我只是无法想象这个用例。不,我认为它是相反的。您的令牌将有多个访问者。这意味着它可以在许多API中使用。那么,关于Microsoft的JWTBeareAuthenticationOptions为什么允许一个API有多个访问群体,您有什么想法吗?我猜想,该实现假定身份验证服务器与资源服务器分离。访问群体是令牌应该有效的任何API(资源服务器)。这允许单个授权服务器保护多个API。