![Azure AD 来宾用户类型](https://linux22.com/image/717297/Azure%20AD%20%E6%9D%A5%E5%AE%BE%E7%94%A8%E6%88%B7%E7%B1%BB%E5%9E%8B.png)
答案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
,也称为组织帐户(工作或学校帐户)。