web-dev-qa-db-ja.com

Azure ADゲストユーザータイプ

招待されたゲストユーザーが認証に以下のいずれかを使用しているかどうかを確認する方法はありますか?.

  • Microsoftアカウント(個人アカウント)

または

  • 組織アカウント(職場または学校のアカウント)

アカウントの種類

3
RickWeb

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は

  • https://login.microsoftonline.com アカウントがAzure ADまたはOffice 365で管理されている場合
  • アカウントがAzure ADで管理されていない場合は、フェデレーションサインインURL(例:adfs.corporate.com)。

Azure ADポータルからは、ゲストとメンバーのどちらであるかしか確認できませんが、ゲストは、Microsoftアカウントであるか仕事であるかを意味しません。

Azure ADのユーザーIDがソースを格納します。

  • Azure AD
  • 外部Azure AD
  • マイクロソフトアカウント

AzureポータルのAzure ADで、[ユーザーとグループ]> [すべてのユーザー]>をクリックします。 1人のユーザーをクリックし、[プロファイル]をクリックします。アイデンティティ情報の下に、アイデンティティのソースがあります。

1
EagleDev

この情報は、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
Michael Guirao