💻

Microsoft Graph Toolkit の Teams MSAL2 Provider について

2022/01/01に公開

Microsoft Graph Toolkit にはいくつかのプロバイダーがあって SharePoint や Microsoft Teams などのいくつかのシナリオでは最適化されているのですが、Microsoft Teams 用のプロバイダーはシングル サインオンに対応しておらず正直イケていませんでした。ところが最近になって Teams MSAL2 Provider というのができてシングル サインオンにも対応したらしいです。ただし肝心のトークン交換のところは「サンプル コードを見てね」と書いてあるのにリンク先には一切の記載がないという。[1] 仕方ないのでコードを見てみます。

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

これはかなり便利になりそうですね!

脚注
  1. よくあることですね。 ↩︎

Discussion