繁体   English   中英

是否可以在不使用 node.js 的情况下从 javascript 调用 login.microsoftonline.com 获取 Bearer Token

[英]Is it possible to call login.microsoftonline.com from javascript to get Bearer Token without using node.js

我正在尝试从 javascript 客户端调用 login.microsoftonline.com/xxx/oauth2/token 以获取承载令牌。 但是当我执行我的请求时,我总是会收到错误 400 Bad Request 而没有任何信息。 在 Postman 中执行我的请求时,一切正常,我得到了我的 Bearer Token,但是在我的 javascript 客户端中尝试时,我收到了这个错误。 我阅读了有关使用 msal.js 库的信息,但据我所知,我需要使用 node.js 服务器才能使用该库访问 azure 广告。 在我的环境中,我没有机会设置 node.js 服务器来使用该库。

我尝试在我的 javascript 客户端中使用以下代码:

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
myHeaders.append("Cookie", "esctx=XXX; fpc=XXX; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd");

var urlencoded = new URLSearchParams();
urlencoded.append("grant_type", "client_credentials");
urlencoded.append("client_id", "XXX");
urlencoded.append("client_secret", "XXX");
urlencoded.append("resource", "XXX");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("https://login.microsoftonline.com/XXX/oauth2/token", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

但是使用它会给我一个错误的请求错误。 该代码是由 postman 根据我在 postman 中的工作请求生成的。关于从客户端调用 azure 广告承载令牌,我还需要了解其他任何信息吗? 从 postman 调用它有什么不同吗?

谢谢您的帮助。 如果您需要任何进一步的信息,我会添加它。

正如 Anand 提到的,MSAL(Microsoft 身份验证库)可用于您自己的用例。

你可以在这里找到它。 链接的 Github 存储库也提供了示例

希望这有助于您实施 MSAL 库以在 javascript 中执行 oauth。

亲切的问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM