【问题标题】:Exception in Azure AcquireTokenAsync() accessing_ws_metadata_exchange_failedAzure AcquireTokenAsync() 中的异常访问_ws_metadata_exchange_failed
【发布时间】:2020-12-22 02:45:34
【问题描述】:

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

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

accessing_ws_metadata_exchange_failed

响应状态码不表示成功: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;
            

【问题讨论】:

    标签: c# azure-active-directory single-sign-on


    【解决方案1】:

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

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

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

    您可以使用Authorization code flow 登录(后端网络应用/原生应用)。

    对于后端 Web 应用程序, 授权代码流程通过您将用户重定向到登录来工作, 取回一个代码,你可以用它来交换令牌。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多