我在我们的 AAD 上遇到了一些奇怪的行为。在用户成功登录后,我们的 API 调用中的某些用户会收到未经授权的请求。事实证明,JWT 中的声明丢失了。一些用户正在获得“组”声明(他所属的所有 groupId 的数组),而有些用户正在获得“hasgroups”声明(如果用户有组,则为布尔值,没有 ID)。由于我们的 API 应用正在检查此“组”声明以获得授权,因此没有此“组”声明的用户会收到 403。</p>
尽管如此,在应用程序注册的清单中,我将“groupMembershipClaims”从“null”设置为“All”或“SecurityGroup”,这应该可以解决问题。还要将“oauth2AllowImplicitFlow”设置为 true,因为我们正在使用使用 OAuth2 的 Angular 应用程序。接下来我比较了几乎所有的用户设置,除了一些额外的组之外,用户是相同的。受影响的用户没有很多组,有些甚至最多有 5 个组。
我是否忽略了某些事情或导致索赔差异的原因?我该如何解决这个问题,以便所有用户都获得“组”声明?