1

我正在编写一个 Web 应用程序,它支持对租户的 Azure AD 身份验证以及个人 Microsoft 帐户身份验证,并为这两个身份验证提供程序请求访问 MS Graph。我在客户端上使用 msal.js 库来处理身份验证。

我经历过以下事情,这让我认为UserAgentApplicationmsal 中的底层对象正在共享状态并阻止我与两个提供者进行异步身份验证。

背景:

我有一个AadAuthProvider类,用于对租户权限进行身份验证。我有一个MsaAuthProvider类,用于针对个人 Microsoft 帐户权限进行身份验证。这些类中的每一个都UserAgentApplication用自己不同的Msal.Configurations.

观察

  1. 尝试Promise从静默调用中返回 aAadAuthProvider.acquireTokenPromiseMsaAuthProvider.acquireToken异步静默调用中返回 a 总是失败并返回 a nonce_mismatch_errorNonce is not matching, Nonce received: e5xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, nonce expected : a7xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
  2. 大多数情况下,第一次调用会成功,第二次调用会失败nonce_mismatch_error。如果我正在调试,那么根据在各种断点处花费的时间,第一个或第二个将失败并显示nonce_mismatch_error.
  3. 如果我 awaitAadAuthProvider.acquireToken然后 await MsaAuthProvider.acquireToken,则操作都成功。

令我感到意外的是,您不能通过 msal 库同时向不同的提供者进行多次调用。我希望UserAgentApplication可以使用不同的配置多次实例化,并且 msal 的使用者可以独立地与它们交互。

有没有办法实例化UserAgentApplication类,以便我可以在不同的提供者中独立使用它们?

4

1 回答 1

0

您可以使用“<a href="https://login.microsoftonline.com/common" rel="nofollow noreferrer">https://login.microsoftonline.com/common”作为您的授权。它支持工作帐户和微软个人帐户。有关更多详细信息,请参阅 https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options

于 2019-08-15T22:09:45.143 回答