🛠️

SharePoint Framework の分離された Web パーツを使ってみる

2022/01/01に公開

SharePoint Framework 1.8.0 から分離された Web パーツという機能が使用できるようになっています。

https://docs.microsoft.com/ja-jp/sharepoint/dev/spfx/web-parts/isolated-web-parts?WT.mc_id=M365-MVP-5002941

リンク先の説明を読んでいただければわかるのですが、簡単な説明をすると、分離された Web パーツは以下の 2 つの機能を持ちます。

  • Web パーツに専用の Azure AD のアプリケーションが作成されます。通常の Web パーツでは Microsoft Graph や Azure AD で保護された Web API へのアクセス許可はテナント レベルで共有されます。しかし、これだと特定の Web パーツ向けに作成した Web API が他の Web API から呼べてしまうというセキュリティの問題を抱えることになります。その問題を解決するため、アプリケーションを分離し、独自のアクセス許可を与えることができるようにします。
  • Web パーツは iframe に埋め込まれ別のドメインで動作します。これはかつての SharePoint ホスト型アドインの表示方法と同じと考えることができます。別のドメインで動作しますが SharePoint REST API の呼び出しは通常通り行えます。

分離された Web パーツはスキャフォールディングのときに指定できます。

? Will the components in the solution require permissions to access web APIs that are unique and not shared with other c
omponents in the tenant? (y/N)

または package-solution.jsonisDomainIsolatedtrue に指定します。

注意点として、Web パーツはサイト コレクションのアプリ カタログにはデプロイできません。テナントのアプリ カタログにデプロイする必要があります。

実際に Web パーツをデプロイしてみます。

SharePoint 管理者ポータルには 分離 としてアクセス許可の承認ができるようになっています。

Azure ポータルからアプリケーションが作成されていることが確認できます。

F12 開発者ツールで見ると Web パーツが iframe 内に表示されているのがわかります。

iframe になることで表示のパフォーマンスは劣化します。そのため、カスタムの Web API を使う場合のみ、この機能を有効にするといいと思います。

Discussion