隐式流在 Azure AD 中反应不正确

Implicit Flow is not reacting properly in Azure AD

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

AADSTS700051: response_type 'token' is not enabled for the application.

代码:

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,这似乎是我目前发现的所有问题的解决方案。此外,在 Authentication 和 Implicit grant 下,访问令牌和 ID 令牌都被检查

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

我建议您使用 on-behalf-of-flow 来解决这个问题。它服务于应用程序调用 service/web API 的用例,后者又需要调用另一个 service/web API.

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


About the Error: AADSTS700051: response_type 'token' is not enabled for the application.

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

清单:

身份验证:

更新:

试试这个 URL,确保 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