🔄

SharePoint REST API を呼び出すためのアクセス トークンの変更について

に公開

SharePoint REST API を呼び出すには Microsoft Entra ID アプリケーションを登録し、OAuth でアクセス トークンを取得する必要があります。

POST https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/authorize?
client_id={{clientid}}
&response_type=code
&redirect_uri={{redirecturi}}
&scope=https://{{tenantname}}.sharepoint.com/AllSites.FullControl

これまでは取得できるアクセス トークン (JWT) の中身は次のようになっていました。

{
  "aud": "https://{{tenantname}}.sharepoint.com",
  "iss": "https://sts.windows.net/{{tenantid}}/",
  ...
}

ここで問題となるのは、SharePoint には通常のサイトに加えて管理センター (https://{{tenant-name}}-admin.sharepoint.com) という異なるドメインが存在する点です。aud は検証に使用されるため、他のドメインで取得したアクセス トークンは利用できません。つまり、通常のサイトで取得したアクセス トークンは管理センターでは利用できず、管理センターで取得したアクセス トークンは通常のサイトで利用できないという状況が発生していました。

この仕様が最近変更されたようです。現在は以下のような中身になっています。

{
  "aud": "00000003-0000-0ff1-ce00-000000000000",
  "iss": "https://sts.windows.net/{{tenantid}}/",
  ...
}

00000003-0000-0ff1-ce00-000000000000 は SharePoint のアプリケーション ID です。これにより、通常のサイトと管理センターのどちらでも同じアクセス トークンを使い回すことが可能になりました。この変更について公式ドキュメントはありませんが、動作が変わっているため注意が必要です。

Discussion