我正在尝试实施OpenID Connect Implicit Flow。前端单页应用程序将ID令牌传递给后端服务器(使用授权头),我需要验证它。
文档要求我to check我信任令牌的受众(aud& azp字段)。我很难理解这个验证步骤的重要性以及不这样做会带来什么安全隐患。如果我不是预期的收件人,为什么我不信任令牌呢?
我的理由是,如果我信任发行人,那么发行的令牌无关紧要。我希望任何clientId的声明都是一样的(这是错的吗?)。理想情况下,当我在我的微服务中传递ID令牌时,他们应该知道要信任的发卡者(并使用discovery protocol来确定密钥)。
如果我跳过此验证步骤,攻击向量是什么?
答案 0 :(得分:2)
发行者可能会向不同的应用程序发放令牌,这些应用程序可能具有不同的权限。不检查受众将允许攻击者在应用程序B中使用为应用程序A颁发的令牌,并可能导致权限提升。
根据您的建议:每个客户的索赔确实可能不同。