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

时间:2018-01-18 19:48:57

标签: angular cordova azure cordova-plugins adal

我使用这个库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?还是有其他替代解决方案?

2 个答案:

答案 0 :(得分:1)

  

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

根据您提到的异常,我假设您注册了Web应用程序/ API应用程序。正如junas提到的,请尝试使用AAD原生应用程序,然后它应该工作。有关详细信息,请参阅此document -Constraints & Limitations section

  

没有网站/保密客户

     

这不是ADAL限制,而是AAD设置。您只能使用来自本机客户端的那些流。机密客户端(例如网站)无法使用直接用户凭据

答案 1 :(得分:0)

您需要设置默认客户端类型的高级设置。只需将此处从“否”切换为即可。

enter image description here