招待されたゲストユーザーが認証に以下のいずれかを使用しているかどうかを確認する方法はありますか?.
または
Work and Schoolアカウントは、オンプレミスまたはMicrosoftクラウドIDサービス(Azure Active Directory)のどこかに保存されている企業アカウントと見なされます。 Microsoftアカウント(コンテキストではMSA)は、以前はWindows Live IDと呼ばれていました。現在、MicrosoftはOutlook.com、XboxLive、Skype、Hotmailなどを含む一元化されたシステムにいくつかのものを組み合わせています。
ただし、MicrosoftアカウントはLive.comだけではないことに注意してください。作業アカウントで作成することもできます(下の画像を参照してください。エイリアスをマスクしましたが、同じです)。この実際のケースでは、個人アカウントはユーザープリンシパル名で作成され、仕事アカウントはOffice 365によって管理されます。
違いは、個人アカウントを選択した場合(それがLiveであっても、企業アカウントと同じユーザープリンシパル名であっても)、 http://login.live.com/ にリダイレクトされますが、 WorkアカウントのログインURLは
Azure ADポータルからは、ゲストとメンバーのどちらであるかしか確認できませんが、ゲストは、Microsoftアカウントであるか仕事であるかを意味しません。
Azure ADのユーザーIDがソースを格納します。
AzureポータルのAzure ADで、[ユーザーとグループ]> [すべてのユーザー]>をクリックします。 1人のユーザーをクリックし、[プロファイル]をクリックします。アイデンティティ情報の下に、アイデンティティのソースがあります。
この情報は、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