💻

Microsoft Graph Toolkit の Teams MSAL2 Provider について

1 min read

この記事ははてなブログに 2021/11/25 に投稿したものの転載です。

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

https://github.com/microsoftgraph/microsoft-graph-toolkit/blob/main/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/dev/packages/simpleauth

こういうところはちゃんとやってほしいなあと思っていたら Issue と Pull Request が上がっていました。next/teamsfx ブランチに入っているので近い将来リリースされると思われます。

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

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

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

Discussion

ログインするとコメントできます