Azure AD 来宾用户类型

Azure AD 来宾用户类型

有什么方法可以判断受邀的来宾用户是否使用以下任一方式进行身份验证。

  • Microsoft 帐户(个人帐户)

或者

  • 组织帐户(工作或学校帐户)

账户类型

答案1

工作和学校帐户被视为存储在本地或 Microsoft 云身份服务 (Azure Active Directory) 中的公司帐户。而 Microsoft 帐户(在上下文中也称为 MSA)以前称为 Windows Live ID。现在,Microsoft 将多个东西合并到一个集中式系统中,包括 Outlook.com、XboxLive、Skype、Hotmail 等。

但请注意,Microsoft 帐户不仅仅是 Live.com。它甚至可以在工作帐户下创建(见下图,我屏蔽了别名,但它们是相同的)。在这个实际案例中,工作帐户由 Office 365 管理,而个人帐户则在用户主体名称下创建。

查看图片

不同之处在于,如果您选择个人帐户(无论是 Live 帐户还是与您的公司帐户相同的用户主体名称),您将被重定向到http://login.live.com/,而工作账号的登录地址为

  • https://login.microsoftonline.com如果帐户是在 Azure AD 或 Office 365 中管理的
  • 如果帐户不在 Azure AD 中管理,则为联合登录 URL(例如 adfs.corporate.com)。

从 Azure AD 门户中,您只能看到哪一个是 Guest 或 Member,但 Guest 并不代表它是 Microsoft 帐户还是工作帐户。

Azure AD 中的用户身份存储源。

  • Azure AD
  • 外部 Azure AD
  • 微软帐户

在 Azure 门户中的 Azure AD 中,单击用户和组 > 所有用户 > 。单击一个用户,然后单击个人资料。在身份信息下,您将获得身份来源。

答案2

您可以使用 Powershell、AzureRm 模块和一些我在任何地方都找不到文档的隐藏 API 检索此信息:

Add-AzureRmAccount
$currentAzureContext = Get-AzureRmContext
$tokenCache = $currentAzureContext.TokenCache
$refreshToken = $tokenCache.ReadItems().RefreshToken
$tenantid = $currentAzureContext.Tenant.Id

$body = "grant_type=refresh_token&refresh_token=$($refreshToken)&resource=74658136-14ec-4630-ad9b-26e160ff0fc6"
$tokresponse = Invoke-RestMethod "https://login.windows.net/$tenantid/oauth2/token" -Method POST -Body $body -ContentType 'application/x-www-form-urlencoded'

$headers = @{"Authorization" = "Bearer $($tokresponse.access_token)"}
$objid = "<UserAccountObjId>"
$response = Invoke-RestMethod "https://main.iam.ad.ext.azure.com/api/UserDetails/$objid" -Headers $headers -Method GET

答案3

实际上,如果您邀请来宾用户加入您的目录,则您一直在使用 Azure AD B2B 协作。

很容易知道帐户正在使用哪个端点进行身份验证:

如果来宾用户是个人帐户,则意味着该帐户未在其他 Azure Active Directory 中创建过,并且其电子邮件帐户不是以 结尾的.onmicosoft.com,应使用 进行身份验证Live.com,也称为 Microsoft 帐户(个人帐户)。

如果来宾用户已经存在于另一个租户中,则也意味着其帐户电子邮件以 结尾.onmicrosoft.com,并通过 进行身份验证.microsoftonline.com,也称为组织帐户(工作或学校帐户)。

相关内容