🆕

Microsoft Graph Toolkit の Teams MSAL2 Provider について

に公開

Microsoft Graph Toolkit にはいくつかのプロバイダーがあり、SharePoint や Microsoft Teams などのいくつかのシナリオでは最適化されています。しかし、Microsoft Teams 用のプロバイダーはシングルサインオンに対応しておらず、正直なところ十分とは言えませんでした。ところが最近になって Teams MSAL2 Provider というものが登場し、シングルサインオンにも対応したようです。ただし、肝心のトークン交換の部分については サンプルコードを見てね と書かれているものの、リンク先には一切の記載がありませんでした。そのため、実際にコードを確認してみました。

https://github.com/microsoftgraph/microsoft-graph-toolkit/blob/922affc7253550cdc5966629069b77f039565e1b/packages/providers/mgt-teams-msal2-provider/src/TeamsMsal2Provider.ts

トークン交換の部分を抜き出すと、次のようになります。

response = await fetch(url.href, {
  method: 'POST',
  headers: {
    Content-Type': 'application/json',
    authorization: Bearer ${clientToken}
  },
  body: JSON.stringify({
    scopes: scopes,
    clientid: this.clientId
  }),
  mode: 'cors',
  cache: 'default'
});

const data = await response.json().catch(this.unhandledFetchError);

...

return data.access_token;

独自の実装になっており、TeamsFx の SimpleAuth と連携しているわけではないようです。

https://github.com/OfficeDev/TeamsFx/tree/ga/packages/simpleauth

このような部分は、今後しっかり対応してほしいと感じていましたが、Issue と Pull Request がすでに上がっていました。next/teamsfx ブランチに含まれているため、近い将来リリースされると思われます。

https://github.com/microsoftgraph/microsoft-graph-toolkit/tree/a19718867b0ff15a72b0491257720d3928bb878f/packages/providers/mgt-teamsfx-provider

今後はかなり便利になりそうです。

Discussion