首页 > 解决方案 > 为什么通过“acquire_token_with_username_password”获取 Azure AD 令牌失败?

问题描述

当我尝试使用“acquire_token_with_username_password”方法对自己进行身份验证并从 Azure AD 获取令牌时,出现以下错误:

请求正文必须包含以下参数:“client_assertion”或“client_secret”。

我正在传递客户端 ID。我在其他一些帖子中读到,问题可能是应用程序应该注册为“本机”应用程序而不是 Web 应用程序,但该帖子是 2 年前的,我没有看到Azure 中应用程序属性上的任何位置,以指定它是本机应用程序。我通过调用在变量中传递 ID:

 token = auth_context.acquire_token_with_username_password(resource, username, password, clientId)

而且我在“acquire_token_with_username_password”中没有看到我会传递client_assertion或client_secret的任何地方,更不用说我不确定我会在那里放什么。

标签: pythonpython-3.xazure-active-directory

解决方案


是的,如果AD App是一个Web类型,'client_assertion'或者'client_secret'是必须的,只要按照截图把AD App设置为公共客户端,即native app,就可以了。

在此处输入图像描述


推荐阅读