🔗

SharePoint Online の REST API を対話なしで実行する

に公開

はじめに

SharePoint 2013 では REST API を使用できます。しかし、Microsoft のドキュメントを見ると、プロバイダー ホスト型 SharePoint アドインから OAuth で使用する場合を想定しているようです。バッチ プログラムのように特定のユーザーを指定して対話なしでアプリケーションを実行できるかどうかがわからなかったため、調査しました。

SharePoint Server (オンプレミス) の場合

オンプレミス環境では NTLM を利用できます。つまり、NetworkCredential に Windows のユーザー名とパスワードを設定することで対応可能です。

SharePoint Online の場合

SharePoint Online では NTLM を利用できないため、OAuth を使用する必要があります。SharePoint が提供する SharePoint アドインの OAuth の仕組みでは、アクセス トークンを取得する際にログイン UI が表示されます。しかし、この方法はバッチ実行には適していません。ログイン UI をスキップするには、Azure AD の OAuth で grant_type=password を指定します。これにより、ユーザー名とパスワードを渡してアクセス トークンを取得できます。ただし、grant_type=password は推奨されていない方法ですので、UI があるアプリケーションの開発ではログイン UI を表示することを推奨します。

以下にサンプルを掲載します。

https://github.com/karamem0/samples/tree/main/sharepoint-rest-password-credentials-flow

注意点は以下の 3 点です。

  • Azure AD でアプリケーションを登録し、Client ID を取得する
  • 登録したアプリケーションに対して管理者の同意をする
  • SharePoint Online へのアクセス許可を設定する

Discussion