获取错误:使用ADAL Library对用户进行身份验证时,“托管用户需要密码”

时间:2018-06-19 00:28:04

标签: .net azure-active-directory adal wia

尝试运行active-directory-dotnet-native-headless的项目,它在使用用户名密码获取令牌时有效。但是在使用Windows Integrated auth(WIA)获取令牌时失败并抛出异常,如下所示:

            //UserCredential uc = TextualPrompt();
            // if you want to use Windows integrated auth, comment the line above and uncomment the one below
            UserCredential uc = new UserCredential();
            try
            {
                result = authContext.AcquireTokenAsync(todoListResourceId, clientId, uc).Result;
            }
            catch (Exception ee)
            {
                ShowError(ee);
                return;
            }

错误是:

  

发生意外错误。消息:发生一个或多个错误。   内部异常:password_required_for_managed_user:密码是   托管用户需要

运行该程序的PC已加入AD,用户运行该程序也是域用户。操作系统是Windows 10。

是否需要在AAD上进行进一步的配置才能使其正常工作?

3 个答案:

答案 0 :(得分:1)

在执行集成Windows身份验证(IWA)流时,您会为“托管”用户遇到此奇怪的异常。托管用户是在AAD中创建但没有AD支持的用户。 IWA基于旧的协议,该协议通过调用AD服务器上的一些API起作用。由于没有AD服务器,因此无法启用此流程。

我已经更新了ADAL和MSAL上的错误消息,并在文档中添加了详细信息。

答案 1 :(得分:0)

如果您使用AAD Connect(因此将本地AD用户同步到AAD)并在租户上启用Seamless SSO,则此方案可以工作。 https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso

答案 2 :(得分:0)

如果您替换此行

ctrl + v

与此一起

result = authContext.AcquireTokenAsync(todoListResourceId, clientId, uc).Result;

一切正常(在我的scenario中,这就是解决方案)。