0

我有一个调用节点 API 的 React SPA,该 API 又调用另一个节点 API。我将第一个 API 配置为允许 user1 访问。我将第二个 API 配置为只允许第一个 API 访问它。当 user1 单击按钮以调用 api 时,使用下面的代码,我收到此错误:

AADSTS700051:没有为应用程序启用 response_type 'token'。

代码:

forecastButtonState = async () => { 
authContext.then(async data => {
  const pData = {latitude: "38.8106", longitude:"-90.6998"};

  const url = "http://localhost:3005/api/getforecast";

  const options = {
    method: 'POST',
    body: JSON.stringify(pData),
    headers: { 'Content-Type': 'application/json' }
  };

  const adalApiFetch = (fetch, url, options) =>
    adalFetch(data, data.config.endpoints.api, fetch, url, options);
  
  try {
    const { response } = await adalApiFetch(axios, url, options);
    console.log(response);
  } catch (error) {
    console.log(error);        
  }      
}); 
};

清单中的“oauth2AllowImplicitFlow”设置为 true,这似乎是我迄今为止发现的所有问题的解决方案。此外,在身份验证和隐式授权下,访问令牌和 ID 令牌都被检查

我很困惑是什么问题。我已经按照它应该的方式配置了它。

4

1 回答 1

1

我建议您使用代表流程来解决此问题。它服务于应用程序调用服务/Web API 的用例,而后者又需要调用另一个服务/Web API。

以下步骤构成了 OBO(代表)流程,并在下图的帮助下进行了解释。

在此处输入图像描述


关于错误:AADSTS700051:未为应用程序启用 response_type 'token'。

您可以修改应用程序清单(导航到应用程序注册 -> 您的应用程序 -> 清单)或在身份验证中选择令牌(导航到应用程序注册 -> 您的应用程序 -> 身份验证)。

显现:

在此处输入图像描述

验证:

在此处输入图像描述

更新:

试试这个网址,确保api可以正常调用。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
&response_type=id_token
&redirect_uri=https://jwt.ms
&scope=openid
&response_mode=fragment
&state=12345
&nonce=678910
于 2020-06-29T02:15:21.600 回答