Azure active directory 为什么MSAL返回的JWT令牌的amr字段有时具有wia或mfa?
我有一个应用程序正在Azure AD租户中验证MS Graph,我正在使用MSAL调用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令牌失败 我的应用程序中的身份验证代码中没有任何代码更改。
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。我编辑了我的原始问题,并添加了关于我的场景的更多信息。这有帮助还是你需要更多的信息?