Microsoft Office 365のシングルサインオン中のエラー「AADSTS51004 The user account does not exist in the directory(ユーザーアカウントがディレクトリーに存在しません)」
Last Updated:
Overview
この記事では、OktaとOffice 365間のシングルサインオン(SSO)フロー中に発生する特定のエラーの解決について説明します。次のようなエラーメッセージが表示されることがあります:
AADSTS51004: The user account <id> does not exist in the <id> directory. To sign into this application, the account must be added to the directory.(AADSTS51004:ユーザーアカウント<id>がディレクトリー<id>に存在しません。このアプリケーションにサインインするには、アカウントをディレクトリーに追加する必要があります。)
Applies To
- Microsoft Office 365を使用する管理者
- フェデレーション(WS-FED)
- シングルサインオン(SSO)
Cause
このエラーは、Microsoft Office 365ユーザーのEntra IDのImmutableIDがOktaで構成されたImmutableIDと一致しない場合に発生します。
Solution
Entra IDでImmutableIDを検証
- Windows PowerShellを開きます。
- 次のコマンドを使用してMicrosoft Graphに接続します:
Connect-MgGraph -Scopes Directory.AccessAsUser.All
注:Microsoft Graphがまだインストールされていない場合は、インストールする必要があります。Microsoftのドキュメント:『Install the Microsoft Graph PowerShell SDK』
- 以下のコマンドを実行して、該当するユーザーのImmutableIDが欠如しているかどうかを検証します(
<user@domain.tld>をユーザーのUPNに変更してください):
Get-MgUser -UserId <user@domain.tld> -Property OnPremisesImmutableId |Format-List OnPremisesImmutableId.
値が空白の場合は、ImmutableIDが欠如していることを示します。
解決策1:ImmutableIDはOktaでは利用可能だが、Entra IDでは欠如している
以下のコマンドを使って、影響を受けるユーザーのImmutableIDを設定します(<user@domain.tld> をユーザーのUPNに、<ImmutableId>を新しいImmutableIdに置き換えてください):
Update-MgUser -UserId user1.test0000@secura.one -OnPremisesImmutableId <ImmutableId>
解決策2:ImmutableIDはEntra IDで利用可能で、Active DirectoryはOktaで使用される
Active Directoryが使用される場合、マッピングをチェックし、値がActive Directoryによって入力されるかどうかを検証します。
Okta管理者ダッシュボード >[Profile Editor(プロフィールエディター)]>[Office 365 instance(Office 365インスタンス)]>[マッピング]>[Okta]>[Office 365]に、
以下の式が表示されます。
hasDirectoryUser()?findDirectoryUser().externalId:null >immutableId
この値がActive DirectoryのexternalIdと一致しない場合、ユーザーを再割り当てすると値が新しくなります。
注:ユーザーの割り当て解除/再割り当て時には、[ユーザーの非アクティブ化]が有効になっていないことを確認してください。
解決策3:ImmutableIDはEntra IDで利用可能で、Active DirectoryはOktaでは使用されない
このシナリオでは、Active Directoryがソースとして使用されず、オブジェクトGUID(外部ID)がimmutableIDにマッピングされません。
OktaユーザーIDがimmutableIDのマッピング値として使用されるのが、推奨されるベストプラクティスです。これはOktaユーザーIDがユーザーのライフサイクルを通じた不変の値であるためです。
以下の式を使用し、マッピングを適宜調整する必要があります。
user.getInternalProperty("id")
関連資料
- Set-MsolUserPrincipalName
- オンプレミスユーザーのクラウドユーザーへのマッチング
- Microsoftのドキュメント:『Install the Microsoft Graph PowerShell SDK』
