【问题标题】:AADSTS70002: The request body must contain the following parameter: 'client_secret or client_assertion'AADSTS70002:请求正文必须包含以下参数:“client_secret 或 client_assertion”
【发布时间】:2018-01-18 19:48:57
【问题描述】:

我使用这个库https://github.com/AzureAD/azure-activedirectory-library-for-cordova,这就是我编写代码的方式:

document.addEventListener("deviceready", () => {
let authContext = new Microsoft.ADAL.AuthenticationContext("https://login.windows.net/(tenant_id)");
console.log("@login : TokenAsync");
var uri = "&client_secret=(value)";
authContext.acquireTokenAsync((resourceurl), (client_id), (redirecturi), this.vEmail, encodeURI(uri))
.then((res) => {
console.log(res);
console.log("Token acquired: " + res.accessToken);
console.log("Ex acquired: " + res.expiresOn);
}, reject => {
console.log(reject);
}); }, false);

我曾尝试使用 extraQueryParameters 添加 client_secret,但错误仍然相同:

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

我如何添加 client_secret ?还是有其他解决方案?

【问题讨论】:

  • 您的应用是公共客户端。您不能使用客户端密码,句号。我以前没有做过 Cordova 应用程序,但您需要使用将用户重定向到登录页面或使用登录页面打开 Web 视图的流程之一。
  • 哦,您的应用在 AAD 中注册为 native 应用 对吧?
  • 应用注册为网络应用。公共客户端的本机应用程序对吗?还是我必须选择原生应用?
  • Cordova 应用程序是本机应用程序。

标签: angular cordova azure cordova-plugins adal


【解决方案1】:

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

根据您提到的例外情况,我假设您注册了 Web 应用程序/API 应用程序。正如 junas 提到的,请尝试使用 AAD 本机应用程序,然后它应该可以工作。更多细节你可以参考这个document -Constraints & Limitations section

没有网站/机密客户

这不是 ADAL 限制,而是 AAD 设置。您只能从本机客户端使用这些流。机密客户端,例如网站,不能使用直接用户凭据

【讨论】:

    【解决方案2】:

    您需要设置默认客户端类型的高级设置。只需将此处从 No 切换到 Yes 即可。

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多