次の方法で共有


ゲスト ユーザーが別のアカウントを使用して SharePoint Online の招待を受け入れたときのエラー

症状

ゲスト アカウントを使用して共有リソースにアクセスしようとすると、次のいずれかのエラー メッセージが表示されます。

  • Access Denied
  • Let us know why you need access to this site.
  • User is not found in the directory
  • You need permission to access this site.

解決策

この問題を解決するには、次の手順に従ってください。

  1. 招待を受け入れたアカウントを決定します。
  2. 正しくないアカウントを削除し、正しいアカウントを追加します。
  3. ユーザーをリソースに再招待します。

: この記事の多くの例では、プレースホルダーとして <contoso> を使用します。 シナリオでは、 <contoso> を組織に使用するドメインに置き換えます。

ゲスト ユーザーとしてアクセスできるアカウントを決定する

正しくない外部ユーザーとしてサイトにアクセスできる場合は、次の手順に従います。

  1. 招待を承諾するために使用した外部ユーザー アカウントとしてサインインします。

  2. 右上隅にあるプロファイル画像をクリックし、[ 個人用設定] をクリックします。

  3. [ アカウント ] フィールドで、メール アドレスを確認します。 たとえば、i:0#.f|membership|JonDoe@contoso.com のようにします。

    : この例では、 JonDoe@contoso.com はユーザーの招待を受け入れた電子メール アカウントです。

  4. アドレスが正しくない場合は、この記事の「正しくない外部ユーザー アカウントを削除する」セクションの手順に従ってください。

正しくない外部ユーザーとしてサイトにアクセスできない場合は、次の手順に従います。

  1. SharePoint Online 管理者として、外部ユーザーと共有されたサイト コレクションにサインインします。

  2. [設定] メニューの歯車アイコンを選択し、[サイトの設定] を選択します。

  3. [ ユーザーとアクセス許可] セクションで、[ ユーザーとグループ] を選択します。

  4. ブラウザー ウィンドウの URL の末尾で、URL の people.aspx? 部分の後で、 MembershipGroupId=<number>MembershipGroupId=0 に置き換え、Enter キーを押します。

  5. ユーザーの一覧で、外部ユーザーの名前を見つけます。 ユーザー名を右クリックし、ショートカットをコピーします。

  6. 新しいブラウザー ウィンドウまたはタブで、前の手順でコピーした URL をアドレス ボックスに貼り付けます。 URL の末尾に &force=1 を追加し、Enter キーを押します。

  7. [ アカウント ] フィールドで、メール アドレスを確認します。 たとえば、*i:0#.f|membership|JonDoe\@contoso.com のようにします。

    : この例では、 JonDoe@contoso.com はユーザーの招待を受け入れた電子メール アカウントです。

  8. アドレスが正しくない場合は、この記事の「正しくない外部ユーザー アカウントを削除する」セクションの手順に従ってください。

正しくない外部ユーザー アカウントを削除する

アカウントがアクセスできる各サイト コレクションから外部ユーザー アカウントを削除する必要があります。 ユーザー アカウントを削除するには、Microsoft 365 のバージョンに応じて、SharePoint Online ユーザー インターフェイスまたは SharePoint Online 管理シェルを使用できます。

Microsoft 365 for Business サブスクリプションの場合は、SharePoint Online UI を使用します。

  1. https://portal.office.comの Microsoft 365 管理センターを参照します。

  2. サービス設定で、[組織全体の設定の管理] を選択します。

  3. 左側のナビゲーション メニューから サイトとドキュメント共有 を選択し、[ 個々の外部ユーザーの削除] を選択します。

  4. 削除する外部ユーザーを選択し、[ 削除 ] アイコンを選択します。

その他のすべてのサブスクリプションでは、次の手順を使用して SharePoint Online 管理シェルを使用します。

このオプションは、Office Small Business (P) 組織には適用されません。

  1. SharePoint Online 管理シェルをダウンロードしてインストールします。

  2. SharePoint Online 管理シェルを起動し、次のコマンドを実行します。

    $cred = Get-Credential
    
  3. [Windows PowerShell 資格情報が必要です] ダイアログ ボックスで、管理者の資格情報を入力し、[OK] を選択します

  4. SharePoint Online に接続し、次のコマンドを実行します。

    Connect-SPOService -Url https://-admin.sharepoint.com -Credential $cred
    
  5. 各サイト コレクションからユーザーを削除します。 次のコマンドを実行します。

    $ExtUser = Get-SPOExternalUser -filter <account@contoso.com>
    

    このコマンドでは、 account@contoso.com を影響を受けるアカウントに置き換えます。

    ユーザーを削除するには、次のコマンドを実行します。

    Remove-SPOExternalUser -UniqueIDs @($ExtUser.UniqueId)
    

SharePoint Online にアクセスする外部ユーザーの機能を削除するには、次の手順に従います。 ただし、ユーザーは検索結果や SharePoint Online 管理シェル Get-SPOUser コマンドレット内に引き続き表示される場合があります。 SharePoint Online からユーザーを完全に削除するには、次のいずれかの方法を使用して UserInfo リストからユーザーを削除します。

  1. SharePoint Online UI を使用します。 ユーザーが以前にアクセスしていた各サイト コレクションを参照し、次の手順に従います。

    1. サイト コレクションで、URL の末尾に次の文字列を追加して URL を編集します。

      _layouts/15/people.aspx/membershipGroupId=0
      

      たとえば、完全な URL は次の例のようになります。

      https://<contoso>.sharepoint.com/_layouts/15/people.aspx/membershipGroupId=0
      
    2. 一覧からユーザーを選択します。

    3. リボンから [ ユーザー権限の削除 ] をクリックします。

  2. SharePoint Online 管理シェルを使用します。

    このオプションは、Small Business サブスクリプションには適用されません。

    1. SharePoint Online 管理シェルを起動します。

    2. 次のコマンドを実行します。

      $cred = Get-Credential
      

      Windows PowerShell 資格情報が必要なウィンドウで、管理者の資格情報を入力し、[ OK] を選択します

    3. SharePoint Online に接続し、次のコマンドを実行します。

      Connect-SPOService -Url https://<contoso>-admin.sharepoint.com -Credential $cred
      
    4. 各サイト コレクションからユーザーを削除します。

      次のコマンドを実行して、影響を受けるゲスト ユーザー アカウントを特定します。

      Get-SPOUser -Site https://<contoso>.sharepoint.com | FT –a
      

    返された結果のゲスト ユーザーのログイン名に注目してください。 ゲスト ユーザーの場合、Microsoft アカウントの場合は"live.com#" プレフィックスが付いている可能性があります。

    次のコマンドを実行して、外部ユーザー アカウントを削除します。

    Remove-SPOUser -Site https://<contoso>.sharepoint.com -LoginName live.com#jondoe@company.com
    

    : live.com#jondoe@company.com をシナリオのユーザーのログイン名に置き換えます。

次に、Microsoft Entra ID からアカウントを削除する必要があります。

  1. 次のコマンドを実行して、Microsoft Graph PowerShell SDK をダウンロードしてインストールします。

    Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery 
    
  2. PowerShell を開き、次のコマンドを実行して Microsoft Graph に接続します。

    Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"
    
  3. ダイアログ ボックスに管理者の資格情報を入力します。

  4. 次のコマンドを実行して、外部 (ゲスト) ユーザーを見つけます。 このコマンドは、UPN によってゲスト アカウントをフィルター処理し、アカウントの ID、UPN、および UserType を表示します。 jondoe_contoso.com#EXT#@yourdomain.onmicrosoft.comをシナリオの特定のユーザーに置き換えます。

    $guestUpn = 'jondoe_contoso.com#EXT#@yourdomain.onmicrosoft.com'
    Get-MgUser -Filter "UserPrincipalName eq '$guestUpn'" -Property Id,UserPrincipalName,UserType | Format-Table -AutoSize
    
  5. 次のコマンドを実行して、ゲスト ユーザーを論理的に削除します。

    Remove-MgUser -UserId <user-id> -Confirm:$false
    
  6. (省略可能)次のコマンドを実行して、ごみ箱からゲスト ユーザーを完全に削除します。

    $deleted = Get-MgDirectoryDeletedItem -Filter "Id eq '<user-id>'" -All
    Remove-MgDirectoryDeletedItem -DirectoryObjectId $deleted.Id -Confirm:$false
    

ブラウザーのキャッシュをクリアする

SharePoint Online では、ユーザー 選択ウィンドウ機能など、いくつかのシナリオでブラウザー キャッシュが使用されます。 ユーザーがシステムから完全に削除された後も、ユーザーはブラウザー キャッシュに残っている可能性があります。 ブラウザー キャッシュをクリアすると、この問題が解決されます。 キャッシュをクリアする場合は、 Cookie と Web サイトのデータ オプションも選択していることを確認します。

外部ユーザーを再招待する

外部ユーザー アカウントを削除した後、適切なメール アドレスを使用して外部ユーザーをサイトに再招待します。 ユーザーが適切なメール アドレスで招待を受け入れることを確認するには、招待のリンクをコピーし、InPrivate ブラウズ セッションに貼り付けるのがベスト プラクティスです。 そうすることで、招待を受け入れるためにキャッシュされた資格情報が使用されなくなります。

詳細情報

ゲスト ユーザーの招待が、送信先の電子メール アドレスを使用して受け入れられる必要はありません。 これは 1 回限りの招待です。 ユーザーが別のアカウントを使用して招待を承諾した場合、または招待を受け入れたユーザーが、招待の送信先の電子メール アドレス以外のアカウントを使用してリソースにサインインした場合、 Access denied メッセージが表示されることがあります。

たとえば、このシナリオを考えてみましょう。 ユーザーは Microsoft アカウントを使用してブラウザー経由でサインインし、ユーザーはメール アプリケーションで外部ユーザー アカウントへの招待メールを受け取ります。 次に、ユーザーが招待を受け入れるリンクを選択します。 ただし、ユーザーのブラウザー Cookie に基づいて、ユーザーは正しくない ID を使用して招待を受け入れます。 そのため、ユーザーが外部ユーザー アカウントを使用してリソースにサインインすると、ディレクトリにユーザーが見つからないというエラーが表示されます。

まだ助けが必要ですか? SharePoint コミュニティに移動します。