我需要在JWT中发出角色的权限作为声明。
目的是在JWT中获得特定用户的权限作为声明,以进行授权。
该用户属于与某个角色相关联的组,该角色在Azure Active Directory中具有特定权限。
说明: 如果我在应用清单中的appRoles数组中添加了一些项目,则角色名称将作为JWT中的角色类型声明以以下格式发出: http://schemas.microsoft.com/ws/2008/06/identity/claims/role:[appRole项中的value属性显示在appRoles数组中]
但是我找不到任何方法来声明角色的权限名称(或任何其他属性)。
我已经在Google文档中搜寻和挖掘了好几天,但找不到任何东西。我希望有可能。
如果不可能的话,一个笨拙的解决方法可能是将我们需要发出的权限表示为AAD角色,并将该角色(在“一组权限”的意义上)表示为AAD特殊功能组,然后将我们希望与角色相关联的组(在理想的世界中)与该特殊的“角色”组相关联。
但这非常笨拙,因为我们实际上将失去角色的自然含义(即一组权限)和组的自然含义(即一组用户和/或组)
感谢您的帮助:)
答案 0 :(得分:0)
value属性是您配置的自定义角色名称,将在JWT中返回。这是设计使然。
权限名称不会在JWT中返回。将appRole添加到Azure AD应用后,需要进行assign users and groups to the role。
您需要在Azure AD APP中添加所需的权限,然后在代码中控制权限。
我们假定您已在Azure AD应用程序中分配了自定义角色,并向该角色添加了用户。
当用户登录时,将返回包含角色声明的令牌。您可以在代码中判断用户的角色。如果它与自定义appRole匹配,则允许他执行操作。如果用户与任何appRoles不匹配,则他无权执行任何操作。