oauth2.0 使用v2令牌的终结点仍提供v1令牌:Azure活动目录

lymgl2op  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(238)

我创建了一个新的应用程序注册,并为Application.Read.All和User.Read.All设置了作用域。我将一个自定义作用域公开为access_as_user。使用v2令牌终结点仍然提供v1令牌,这是现在的主要问题。
v1令牌端点:https://login.microsoftonline.com/tenantid/oauth2/token
v2令牌端点:https://login.microsoftonline.com/tenantid/oauth2/v2.0/token
两个端点都提供相同版本的令牌,即版本1.0为什么会这样?如果我注册了多租户应用程序,那么它将向两个端点提供版本2.0的令牌。
我的要求是为单租户应用程序获得v2.0令牌。有什么方法可以实现这一点吗?

i7uaboj4

i7uaboj41#

我尝试在我的环境中重现相同的结果,结果如下:

我注册了一个单租户应用程序,并授予了API权限,如下所示:

当我检查此应用程序的清单时,* 接受的令牌版本 * 为空,如下所示:

我通过Postman使用v2.0标记端点为自定义范围生成了标记,如下所示:

POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
grant_type:client_credentials
client_id:<appID>
client_secret:<secret>
scope: api://xxxxxxxxxxxxxxxxxxx/.default

回应:

当我在jwt.ms中解码上述令牌时,令牌版本为1.0,如下所示:

要获取v2.0令牌,您需要更改应用程序的清单,如下所示:


指令集
当我再次生成令牌并对其进行解码时,我得到的令牌版本为2.0,如下所示:

在您的情况下,请在清单文件中将accessTokenAcceptedVersion更改为2,然后再次生成令牌。

相关问题