SharePoint Framework ゲストユーザーに利用させたい
SharePoint Framework で Web パーツや拡張機能を開発&展開後、テナント内のユーザーは問題なく利用できるけれど、ゲスト ユーザーはエラーになってしまう。。
今日はこのような場合にどのようにすればよいか対処方法をご紹介します。
エラーの原因
SharePoint Framework で作成した Web パーツや拡張機能は config\package-solution.json の includeClientSideAssets が true の場合、実行に必要なすべての *.js *.jpg などをパッケージに含め、テナントの設定に応じてファイルをどこに配置するかを決定します。テナントでMicrosoft 365 パブリック CDN を有効にしていない場合、テナントのアプリ カタログ サイト内の ClientSideAssets ライブラリ (隠しライブラリのため URL を直接指定することで確認) に配置されます。
何もしなければゲスト ユーザーはアプリ カタログ サイトに対してアクセス権を持ちませんのでエラーになってしまう。というわけです。
対処方法
ゲスト ユーザーに作成したアプリを利用させたい場合、いくつかの方法がありますが、以下の 2 つの方法が容易な対処方法です。
① アプリ カタログに対してゲスト ユーザーに権限を付与
アプリ カタログ サイトに権限が不足しているためエラーが発生しているので、権限を付与すれば参照できるようになります。
SharePoint Online Management Shell を利用することで Azure Active Directory の非表示グループを表示させるようにすれば、ゲスト ユーザーのグループを権限設定時に利用できるようになります。
Set-SPOTenant -ShowEveryoneClaim $true
※ 2018 年 3月より前に作成したテナントでは既定で True だったようなのですが、最近は False が既定になりました。
② Microsoft 365 パブリック CDN を有効に
Microsoft パブリック CDN は静的資産をグローバルな高速ネットワークから提供し、それにより SharePoint Online ページのパフォーマンス向上がはかれます。
これを利用することで SPFx の開発内容で利用する *.js や画像ファイル等が Microsoft パブリック CDN と呼ばれる匿名でアクセス可能な環境に自動的に保存され利用時に参照できるようになります。
Set-SPOTenantCdnEnabled -CdnType Public
- アプリ カタログ サイトにアップロードしたコンテンツがパブリック CDN で利用できるようになるまで 15 分程度かかると言われています。実際に試してみたところだいたい私は数分で Microsoft パブリック CDN からファイルが提供されるようになりました。
- 匿名アクセス可能な領域に保存されるという事は認識したうえで利用しましょう。
- なお、匿名アクセス可能ですが、普通に URL にアクセスするだけではファイルは取得・参照できません。該当テナントの SharePoint ページからのリクエストの場合 (厳密にいうとリクエストヘッダーの Referer に自テナントの SharePoint ページの URL が入っている場合) にのみファイルが取得可能という動作となります。
今回ご紹介した内容は SPFx v1.4 で導入された includeClientSideAssets 属性を利用しているため新しい内容ではありませんが、ゲスト ユーザーに Web パーツや拡張機能を利用してもらいたい場合に参照していただけたらと思います。
関連コース
- CI620-H SharePoint Framework 開発 基礎
これから SharePoint Framework の開発を行う方を対象に知っておくべき内容を 2 日間に集約して体系的に解説! - CI615-H Power Automate 入門 – Excel 連携
Power Automate をこれからはじめる業務ユーザー向けの基礎コース。業務でよく利用する Excel での自動化を課題とした実習ベースで解説します。 - CI617-H Power Automate によるフロー作成
基本を理解した方がより上級者レベルへと進むためのステップアップコース。Microsoft 365 各製品との連携や、より高度な設定の理解をめざします。