Azure AcquireTokenAsync() 中的异常 accessing_ws_metadata_exchange_failed

Exception in Azure AcquireTokenAsync() accessing_ws_metadata_exchange_failed

关于将外部 Gmail 用户添加到 Azure Active Directory 组,我已经从 Azure 门户邀请了一个 Gmail 用户,并且 Gmail 用户已同意访问在 Azure 企业应用程序中注册的应用程序。

当 Gmail 用户尝试登录我的单点登录页面时,当我尝试通过 AcquireTokenAsync() 方法获取令牌时,Azure 验证抛出异常

accessing_ws_metadata_exchange_failed

Response status code does not indicate success: 406 (NotAcceptable).

下面是我的 C# 代码,用于根据 Azure Active Directory 验证用户。

var authority = string.Format(CultureInfo.InvariantCulture, "https://login.windows.net/{0}", tenantId);
var authenticationcontext = new AuthenticationContext(authority);
var upc = new UserPasswordCredential(username, password); //gmailusername and password
authenticationResult = authenticationcontext.AcquireTokenAsync("https://graph.windows.net", clientId, upc).Result;
            

您使用的登录流程不适用于联合用户(例如这些来宾)。

您在此处使用的资源所有者密码凭据 (ROPC) 授权流程实际上只是一个传统的升级路径,并不是真正的现代身份验证。

顺便说一句,该登录流程也不支持使用多重身份验证或密码过期的用户。

您可以使用 Authorization code flow 登录(后端网络 app/native 应用程序)。

对于后端 Web 应用程序, 授权代码流通过您重定向用户登录来工作, 取回兑换代币的代码。

在本机应用程序中,可以通过向用户显示登录页面的弹出窗口来使用它。 它可以通过 AcquireTokenAsync().

的不同重载来使用