我在使用Azure AD时注意到了一些事情。
在客户端清单上指定了批准作为应用程序,当我使用 UserAssertion 和 ClientCredentials 生成令牌时,我在返回的JWT有效负载中找不到批准。如果我仅使用 ClientCredentials 生成令牌,那么这种情况就不会发生,其中确实还会批准返回
这是正常的还是我遗失了什么?
提前致谢
我要尝试解释这个场景
这是app清单:
{
"allowedMemberTypes":
[ "Application" ],
"displayName": "Protocollo",
"id": "some GUID",
"isEnabled": true,
"description": "some Descr",
"value": "Proto"
}
我有三个应用:app a,app b和app c。
应用B具有应用程序角色(请参阅上面的清单),用户登录应用程序a。
App c需要app a中已登录用户的用户名。
当app b使用UserAssertion和ClientCredentials(如前所述)为app c生成令牌时,我无法在返回的jwt中找到app b角色。如果我只使用客户端ClientCredentials
答案 0 :(得分:0)
您是否为应用程序声明了应用程序角色?您描述的场景(使用UserAssertion和ClientCredentials)使用委托用户身份和OAuth 2.0 On-Behalf-Of:
用户已在本机应用程序上进行了身份验证,此本机应用程序需要调用Web API。 Azure AD发出JWT访问令牌以调用Web API。如果Web API需要调用另一个下游Web API,它可以使用代表流来委派用户的身份并对第二层Web API进行身份验证。因此,在此方案中只有delegate permission
涉及访问令牌。
方案(使用客户端ClientCredentials)正在使用具有OAuth 2.0客户端凭据授权的应用程序标识,Azure AD对应用程序进行身份验证并返回用于调用Web API的JWT访问令牌。此方案中访问令牌中涉及的应用程序角色。