Azure active directory 为什么MSAL返回的JWT令牌的amr字段有时具有wia或mfa?

Azure active directory 为什么MSAL返回的JWT令牌的amr字段有时具有wia或mfa?,azure-active-directory,msal,msal.js,Azure Active Directory,Msal,Msal.js,我有一个应用程序正在Azure AD租户中验证MS Graph,我正在使用MSAL调用acquireTokenSilent。有时我的应用程序会收到一个JWT访问令牌,其中amr字段包含mfa,具体来说: amr: [ "pwd", "rsa", "mfa" ] 这导致海外建筑运营管理局令牌交换成功 我的应用程序多次收到JWT访问令牌,其中amr字段包含wia: amr: [ "wia" ] 尝试将此令牌交换为OBO令牌失败 我的应用程序中的身份验证代码中没有任何代码更改。

我有一个应用程序正在Azure AD租户中验证MS Graph,我正在使用MSAL调用
acquireTokenSilent
。有时我的应用程序会收到一个JWT访问令牌,其中amr字段包含mfa,具体来说:

amr: [
  "pwd",
  "rsa",
  "mfa"
 ]
这导致海外建筑运营管理局令牌交换成功

我的应用程序多次收到JWT访问令牌,其中amr字段包含wia:

amr: [
  "wia"
 ]
尝试将此令牌交换为OBO令牌失败

我的应用程序中的身份验证代码中没有任何代码更改。是什么导致了
行为的差异

谢谢

编辑

该应用程序是一个SPA,使用ReactJS以TypeScript编写。我们要求用户在加载任何内容之前使用AAD登录,并通过
componentDidMount
React方法将应用程序调用
loginDirect
到我们的租户权限以实现此目的

当用户发起对授权源(我们编写的中间层服务)的调用时,应用程序调用acquireTokenSilent以获取一个具有中间层服务配置API作用域的令牌。然后它调用我们的中间层服务,并在报头中发送带有承载前缀的令牌。该服务将令牌交换为海外建筑运营管理局令牌

我们在Azure门户中注册了一个AAD应用程序,该应用程序已将API权限委托给AAD Graph用户。读取和配置我们中间层服务的API

中间层服务接收令牌(我们从应用程序的
acquireTokenSilent
调用中获得)并将其交换为一个OBO令牌,请求对MS Graph和
requested_token_use=代表
的多个作用域的权限

当从acquireTokenSilent接收到的JWT访问令牌的
amr
字段包含
wia
时,中间层服务上的令牌交换会收到一个关于要求MFA的条件接收请求质疑的错误。

amr
是JWT中的请求
pwd
指由服务(使用客户端密码)或用户进行的密码身份验证,
wia
是Windows集成身份验证

您需要更多地了解您的设置,如您使用的平台、您的总体方案,以及您如何设置客户端应用程序和进行acquire令牌调用,以便确定调用之间的差异


您可以在MSAL.NET和海外建筑运营管理局上查看此信息并找到更多信息。更多。

谢谢@Jenny。我编辑了我的原始问题,并添加了关于我的场景的更多信息。这有帮助还是你需要更多的信息?