oauth2.0 我应该在React应用调用后端API(用于将调用转发到Graph API)中使用哪个令牌

dtcbnfnu  于 2023-01-01  发布在  React
关注(0)|答案(1)|浏览(100)

在我的React应用中,我使用OAuth 2.0授权代码授予进行身份验证,并使用Graph APi发出大多数请求(我在Azure AD中注册了一个应用)。它们与我使用MSAL2提供程序(工具包)接收的访问令牌完美配合。

Providers.globalProvider = new Msal2Provider({
  clientId: config.clientId,
  authority: config.authority,
  redirectUri: config.redirectUri,
  scopes: [
    "openid",
    "profile",
    "Calendars.ReadWrite",
    "Place.ReadWrite",
    "Place.ReadWrite.All",
    "User.Read",
    "People.Read",
  ],
});

我用以下函数获取访问令牌:

const getAccessToken = async () => {
  let token;
  if (Providers.globalProvider.state === ProviderState.SignedIn) {
    token = await Providers.globalProvider.getAccessToken();
    token = `Bearer ${token}`;
  }
  return token;
};

最近,我得到了另一个服务,但不是直接到图形API,而是由我们的后端谁后,一些验证作出查询图形API(确切地说,它是一个房间更新调用

https://graph.microsoft.com/v1.0/places/${roomId}

我的服务:

const updateRoom=async (roomId:string|undefined, room:Room):Promise<void>=> {
  return axios.put(`http://localhost:3000/api/v1/rooms/${roomId}`,     {capacity:Number(room.capacity),equipments:room.tags},{
  headers: {
    Authorization: await getAccessToken(),
  },
  })

但我从服务器得到的是状态500,AxiosError:请求失败,状态代码为500\n。
当在Swagger中测试我们的后端应用程序时-〉它工作正常,房间更新正确。我曾尝试从Swagger中复制令牌并在我的React应用程序中使用相同的令牌--〉也工作正常,但我无法将从MSAL2接收的访问令牌用于此目的。为什么会发生这种情况?在哪里可以找到前端或后端的解决方案?

hkmswyz6

hkmswyz61#

你是否使用相同的帐户来测试Swagger和React应用程序中的请求?正如文档所说,只有“工作或学校帐户”支持地点更新。这会是一个问题吗?

相关问题