首页 > 解决方案 > 应用角色未在访问令牌中传递

问题描述

在 Azure Active Directory 中,我注册了一个应用程序并在清单中定义应用程序角色,如下所示:

"appRoles": [
    {
        "allowedMemberTypes": [
            "User"
        ],
        "description": "Normal user access",
        "displayName": "User",
        "id": "a046aca0-a7c4-4c33-8377-e43c4d7bd89f",
        "isEnabled": true,
        "value": "User"
    },
    {
        "allowedMemberTypes": [
            "User"
        ],
        "description": "Full admin access",
        "displayName": "Admin",
        "id": "0204f02c-d752-48b5-8b8f-2f8ccb7f83d7",
        "isEnabled": true,
        "value": "Admin"
    }
],
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,

每当用户收到访问令牌时,也会包含角色。一切正常。

现在我们已经创建了另一个 Azure Active Directory。我注册了一个应用程序并定义了应用程序角色,过程与以前完全相同。但是,角色不包含在访问令牌中。有人可以帮我解决这个问题吗?

标签: azure-active-directory

解决方案


首先请检查您是否为用户分配了角色,您可以参考本教程

其次,我不确定您是指访问令牌还是 id 令牌。据我所知,该角色不会显示在访问令牌中。它只会显示在 id 令牌中。您可以使用授权码授权openID 连接等流程来登录用户。响应将具有 id_token。

这是另一个与此问题类似的帖子供您参考。

顺便说一句,如果我们使用“client_credentials”作为授权类型,我们可以看到在 API 权限中添加的权限角色(在应用程序权限中)(访问令牌包含一个roles属性)。但是如果我们使用“密码”授权类型,访问令牌将没有这个roles属性。所以请注意您使用的授权类型。

希望能帮助到你。


推荐阅读