Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 使用来自chrome扩展的Microsoft Graph API(msal库)_Google Chrome Extension_Msal_Msal.js - Fatal编程技术网

Google chrome extension 使用来自chrome扩展的Microsoft Graph API(msal库)

Google chrome extension 使用来自chrome扩展的Microsoft Graph API(msal库),google-chrome-extension,msal,msal.js,Google Chrome Extension,Msal,Msal.js,我正在进行chrome扩展,我需要根据Microsoft帐户验证用户,以便从后台脚本使用MSAL库图形API。但目前我收到错误AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配 不幸的是,我无法在Microsoft portal中输入以chrome extension://开头的重定向uri 有没有办法做到这一点,还是说这是不可能的 编辑: 好的,看来我可以使用chrome.identity.launchWebAuthFlow来完成这个任务。但是,当请求令牌时,需要

我正在进行chrome扩展,我需要根据Microsoft帐户验证用户,以便从后台脚本使用MSAL库图形API。但目前我收到错误AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配

不幸的是,我无法在Microsoft portal中输入以chrome extension://开头的重定向uri

有没有办法做到这一点,还是说这是不可能的

编辑:

好的,看来我可以使用chrome.identity.launchWebAuthFlow来完成这个任务。但是,当请求令牌时,需要客户机密钥,我得到401响应代码。在扩展的后台脚本中包含此客户端密码安全吗


如果我没看错的话,msal库不需要client_secret

msal.js支持不同的身份验证流

称为隐式的需要显示登录页面弹出窗口或重定向,以便用户输入凭据。此流不要求从应用程序中提供客户端密钥

要解决此流的AADSTS50011错误,您需要确保重定向uri已向Azure AD注册。chrome extension://URL确实不符合Azure要求

对于这种情况,有一个解决方案-chrome.identity.getRedirectURL。此函数生成此类重定向url:

https://<app-id>.chromiumapp.org/*
每次应用程序请求身份验证时,客户端凭据授予流都不需要用户授权。但在浏览器扩展中存储凭据是不安全的


有更多的流,但我看不出它们与原始问题案例相关。

听起来像是chrome.identity.launchWebAuthFlow的完美工作,如果需要,请查找示例。@wOxxOm是的,这可以用于授权,但是令牌获取呢?这必须是返回响应负载中的令牌数据的POST请求。如果我没弄错的话,chrome.identity.launchWebAuthFlow只支持get请求并在回调中返回URL。如果您还没有读过,也许这篇文章可以帮您解决这个问题@mikeek你能做到吗?如果是,你能回答你的问题将是一个帮助吨!
chrome.identity.launchWebAuthFlow(
  {
    url: authUrl,
    interactive: true
  },
  function (response) {
    // do stuff with code/token, etc.
  }
);