【问题标题】:Azure Powershell throws "Unknown User Type"Azure Powershell 抛出“未知用户类型”
【发布时间】:2015-05-04 00:12:11
【问题描述】:

我正在尝试针对 AD 帐户验证 Powershell 脚本(根据 this guide):

$userName = "username@mydomain.com"
$securePassword = ConvertTo-SecureString -String "myPassword1" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($userName, $securePassword)
Add-AzureAccount -Credential $cred

但是我遇到了错误:

Add-AzureAccount : unknown_user_type: Unknown User Type
At line:2 char:1
+ Add-AzureAccount -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Add-AzureAccount], AadAuthenticationFailedException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.Profile.AddAzureAccount

我在用户名/密码中输入什么并不重要,即使是用户名和密码的“adsfasdf”也会给我相同的结果。

以前有人解决过这个问题吗?

【问题讨论】:

  • mydomain.com 是否配置为 Azure AD 中的联合域?另外,你能用username@mydomain.com登录portal吗?
  • 是的,我可以使用提供的凭据登录。如果我选择Add-UserAccount 并等待弹出窗口询问凭据,则相同的用户名/密码对在那里有效。
  • 如果我指定了无效域,则会收到错误“unknown_user_type: Unknown User Type”。你确定域名有效吗?用户名是否包含任何特殊字符?
  • 愚蠢的问题:尝试过没有将其转换为安全字符串?
  • @jisaak 是的,域是有效的 100% 我将用户名/密码从脚本复制粘贴到交互式窗口中,它会验证我的身份。

标签: powershell azure azure-powershell


【解决方案1】:

对于任何提出这个问题的人,我提供的分析解决了我环境中的类似问题。我还在考虑以下回复中原始问题中非常有用的 cmets。

  1. 请检查您是否能够使用这些凭据并手动登录Azure portal
  2. 确保您使用的帐户是组织帐户。 Microsoft 有安全限制,您无法使用用于各种目的和站点的 Microsoft 帐户(以前称为 live id)登录。此组织帐户必须与 Microsoft 帐户分开。

在微软官方发布的文档中阅读有关组织帐户要求的更多信息:Windows Azure Organizational Accounts FAQ

【讨论】:

【解决方案2】:

我正在尝试更改 B2C 用户的密码。

我使用的是使用 GraphAPI 库的 .NET 解决方案

但是当我进行密码更改测试时,我收到了“未知用户类型”的消息

为了修复错误,我更改了信息中用户名的值,以使用属性“userPrincipalName”中的值更改密码,而不是使用“用户名”。这个属性可以在 Azure clasico 的门户中看到,也可以通过 GraphApi 看到:

{ "odata.type": "Microsoft.DirectoryServices.User", “objectType”:“用户”, "objectId": "xxxxxxxxxxxxxxxxxxxx", “删除时间戳”:空, “accountEnabled”:真, "signInNames": [ { “类型”:“用户名”, “价值”:“joeconsumer” } ], "userPrincipalName": "123c89f2-002d-40e9-934e-065f171b3ca5@xxxxxx.onmicrosoft.com", “用户类型”:“会员” }

希望对你有帮助

【讨论】:

    【解决方案3】:

    为了详细说明这篇文章中的 UPN 问题,我自己刚开始使用 Azure AD 并收到此错误。他们所说的“使用 userPrincipalName”实际上就像听起来一样愚蠢和容易。 我试图将 connect-azuread 与存储的凭据一起使用并收到同样的错误。我发现用作登录时连接失败。将其更改为 username@tenantdomain.com 后,我就能够自动连接。

    我希望这会有所帮助,因为它可以立即解决我的问题!

    【讨论】:

    • 什么意思,能详细点吗?问题的用户已经尝试将 "$userName = "username@mydomain.com"" 作为用户名,那么这与您的方法有何不同?
    【解决方案4】:

    当我遇到此错误时,问题是我登录时使用的帐户(我的 Windows Live 帐户)需要双重身份验证。 documentation 描述了三种登录方式:

    1. Connect-AzureAD -Confirm 交互。这会弹出一个对话框,因此不能用于无人参与的脚本。

    2. 使用变量,正如我和 OP 所尝试的那样。但是文档说:

    如果为您的凭据启用了多重身份验证,您必须使用交互选项登录或使用服务主体身份验证。

    1. 作为服务主体,使用自签名证书——这比我愿意做的工作要多,幸运的是我不需要无人值守的操作,所以我可以使用选项 #1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 2017-08-13
      • 2019-06-06
      • 2021-01-12
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 2013-10-20
      相关资源
      最近更新 更多