Azure active directory 使用msal.js异步向租户授权机构和Microsoft个人帐户授权机构进行身份验证时出现nonce_不匹配_错误

Azure active directory 使用msal.js异步向租户授权机构和Microsoft个人帐户授权机构进行身份验证时出现nonce_不匹配_错误,azure-active-directory,msal,msal.js,Azure Active Directory,Msal,Msal.js,我正在编写一个web应用程序,它支持对租户的Azure AD身份验证以及个人Microsoft帐户身份验证,并请求这两个身份验证提供商访问MS Graph。我正在客户端上使用msal.js库来处理身份验证 我经历过以下情况,这使我认为msal中的底层UserAgentApplication对象正在共享状态,并阻止我与两个提供程序进行异步身份验证 背景: 我有一个AadAuthProvider类,用于针对租户权限进行身份验证。我有一个MsaAuthProvider类,用于针对个人Microsoft

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

我经历过以下情况,这使我认为msal中的底层
UserAgentApplication
对象正在共享状态,并阻止我与两个提供程序进行异步身份验证

背景:

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

观察结果

  • 尝试从调用
    AadAuthProvider返回
    Promise
    。acquireToken
    静默返回
    Promise
    ,从调用
    MsaAuthProvider返回
    Promise
    静默异步返回
    nonce\u错误时,acquireToken
    始终失败:
    nonce不匹配,收到的临时订单:e5xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,预期的临时订单:a7xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。
  • 大多数情况下,第一个调用将成功,第二个调用将失败,出现
    非匹配错误
    。如果我正在调试,那么根据在各个断点上花费的时间,第一个或第二个断点将失败,并出现
    nonce\u mismatch\u错误
  • 如果我等待
    AadAuthProvider.acquireToken
    ,然后等待
    MsaAuthProvider.acquireToken
    ,则操作都会成功
  • 我感到意外的是,您不能通过msal库同时向不同的提供者发出多个调用。我希望可以使用不同的配置多次实例化
    UserAgentApplication
    ,并且msal的使用者可以独立地与它们交互


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

    您可以使用“”作为权限。它支持工作帐户和Microsoft个人帐户。有关更多详细信息,请参阅

    您可以使用“”作为您的权限。它支持工作帐户和Microsoft个人帐户。有关更多详细信息,请参阅

    既然Azure AD V2.0,为什么不使用公共端点,它可以用于使用工作和学校帐户或Microsoft个人帐户登录用户?如果你这样做,你只需要一个实例。有关更多详细信息,请参阅自Azure AD V2.0以来,为什么不使用公共端点,它可以用于使用工作和学校帐户或Microsoft个人帐户登录用户?如果你这样做,你只需要一个实例。有关详细信息,请参阅