jwt中“ aud”和“ iss”之间的区别


13

我想实现一个更强大的身份验证服务,这jwt是我要做的事情的很大一部分,而且我了解如何编写代码,但是在理解保留issaud声明之间的区别时遇到了一些麻烦。我知道,一个定义了颁发令牌的服务器,而一个则引用了打算使用的应用程序。但是我的理解是,我的听众和发行人是同一件事,myserver.com就是发行令牌,以便以后的人们myserver.com可以得到授权和认证。我想我看不到两种说法之间的区别,尽管我知道有一种。
有一篇很好的文章写在msdn 关于所有保留的索赔,这是我最困惑的地方,因为他们的发行人和受众完全不同。


您可能感兴趣的JWT RFC-7519
2015年

Answers:


10

它们适用于您具有与目标接收者的应用程序不同的令牌发行者的情况。

这对于您的应用程序可能没有什么不同。

但是考虑一个大规模的应用程序。您可能有一个正在发布证书的OAuth或SSO服务器,并且一个想要显示SSO服务器的令牌的应用程序已经检查了用户的凭据并批准了用户使用该应用程序。在这种情况下,您可能会使用"aud": "aud.example.com"和标记"iss": "sso.example.com"


哦,我明白了。在我看来,这是一种误解,因为我想了两件事:1.您必须同时拥有“ iss”和“ aud”作为要求的一部分。2.它们必须彼此唯一。这显然不是事实。那么,如果您有像我这样的应用程序,您是否会在您的声明中包含这两个声明,jwt或者将它们排除在外,因为它们是相同的?
亚当·麦克古尔克

您当然可以将它们排除在外,并在以后有理由使用时添加它们
Paul

aud有时是第三方或不?
安迪

我想我也很困惑为什么不将范围用于指示用户已获批准用于给定的应用程序。
安迪

是的,aud可以是单个值或数组。它应该在每个预期的收件人或处理器上匹配。假设您是要调用api.example.com来运行查询的用户(或应用程序)。如果api.example.com信任某些第三方身份验证服务(例如Auth0)来处理身份验证,则该身份验证服务应填充aud“ api.example.com”,并且“ api.example.com”处的应用程序应验证是否为案件。范围比受众更精细,并且也可以包含在有效负载中。
保罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.