2026年5月5日に公開・更新された「Microsoft Teams documentation update: Bump Microsoft.Identity.Client from 4.46.0 to 4.84.0」は、Teams本体の画面や会議機能が変わる更新ではありません。結論から言うと、Microsoft Teamsの会議スケジュール用Webアプリサンプルで使われている認証ライブラリ「Microsoft.Identity.Client(MSAL.NET)」を、4.46.0から4.84.0へ上げる開発者向けの依存関係更新です。Teamsの一般利用者は対応不要ですが、Teams連携アプリ、Microsoft Graph、Azure Web App、Entra IDのアプリ登録を使って会議作成機能を運用している開発者・管理者は、認証処理、依存パッケージ、.NET実行環境、Graph権限を確認する必要があります。(GitHub)
今回の更新で何が変わるのか
今回の変更は、MicrosoftのGitHubリポジトリ「TeamsMeetingsWebScheduler」に対するDependabotのPull Requestです。PR #93では、TeamsMeetigSchedulerWebsite/TeamsMeetigSchedulerWebsite.csproj内のMicrosoft.Identity.Client参照が、4.46.0から4.84.0へ変更されています。差分は1ファイル、1行の追加・1行の削除で、PRは確認時点でOpenの状態です。(GitHub)
| 確認項目 | 内容 | 実務上の見方 |
|---|---|---|
| 対象 | TeamsMeetingsWebScheduler | Teams会議をWeb画面からスケジュールするサンプルアプリ |
| 変更対象 | Microsoft.Identity.Client | Microsoft IDプラットフォームのトークン取得に使うMSAL.NET |
| バージョン | 4.46.0 → 4.84.0 | メジャー4系の範囲内だが、差分は大きい |
| 変更箇所 | .csprojのPackageReference | アプリコード変更ではなくNuGet依存関係の更新 |
| Teams利用者への影響 | 原則なし | TeamsクライアントやTeams管理センターの設定変更ではない |
| 開発者への影響 | あり | 認証、トークンキャッシュ、Graph API呼び出しの検証が必要 |
TeamsMeetingsWebSchedulerは、Microsoft 365テナントのユーザーがシンプルなWeb UIからTeams会議をスケジュールできるAzure Web App向けのコードとして公開されています。READMEでは、Graph API利用のためのアプリ登録、OnlineMeetings.ReadWriteとCalendars.ReadWriteの権限付与、管理者同意などが前提として示されています。(GitHub)
まず押さえるべき結論
この更新を「Teamsの仕様変更」と捉えると誤解します。見るべきポイントは、Teamsではなく、Teams連携アプリの認証基盤です。
特に確認すべきなのは次の3点です。
| 優先度 | 確認すること | 理由 |
|---|---|---|
| 高 | 自社アプリがMicrosoft.Identity.Client 4.46.0を使っていないか | 4.46.0はNuGet上で非推奨・保守対象外と表示されています |
| 高 | 認証フローが4.84.0で正常に動くか | サインイン、トークン取得、Graph API呼び出しに影響する可能性があります |
| 中 | .NET Core 3.1のまま運用していないか | サンプルの現行.csprojはnetcoreapp3.1を対象にしており、.NET Core 3.1はすでにサポート終了しています |
| 中 | 推移的依存関係に競合が出ないか | Microsoft.IdentityModel.AbstractionsやSystem.Text.Jsonなどの依存関係が新しくなります |
| 中 | PRの状態を確認する | PRがOpenの場合、まだmainブランチや本番環境に反映済みとは限りません |
NuGetでは、Microsoft.Identity.Client 4.46.0は「legacy and no longer maintained」として非推奨扱いになっており、最新のMicrosoft.Identity.Clientへ移行するよう案内されています。一方、4.84.0ではサポート対象範囲として4.77.1以降が示され、古い4.46.0を使い続ける理由はかなり弱くなっています。([NuGet][3])
対応すべき人、対応不要な人
対応すべき人
次に該当する場合は、今回のMicrosoft.Identity.Client更新を確認対象に入れてください。
| 対象者 | 確認すべき理由 |
|---|---|
| TeamsMeetingsWebSchedulerをforkして使っている開発者 | 依存ライブラリの更新がそのまま自社環境に影響する可能性がある |
| Microsoft GraphでTeams会議を作成している開発者 | トークン取得や権限処理にMSAL.NETを使っている可能性が高い |
| Azure Web App上でTeams連携アプリを運用している管理者 | デプロイ後の認証失敗やGraph APIエラーを事前に防ぐ必要がある |
| Entra IDのアプリ登録やクライアントシークレットを管理している担当者 | リダイレクトURI、シークレット期限、API権限の再確認が必要 |
| 古い.NET Coreアプリを保守しているチーム | MSAL更新だけでなく、実行基盤の更新計画も必要 |
対応不要な人
Microsoft Teamsを通常の会議、チャット、通話で使っているだけのユーザーは、今回の更新に対して操作する必要はありません。Teamsアプリの再インストール、会議設定の変更、Teams管理センターでのポリシー変更も不要です。
また、TeamsMeetingsWebSchedulerを使っていない組織でも、似た構成の自社アプリがある場合は注意が必要です。たとえば「WebアプリからTeams会議を作成する」「Graph APIで予定表に会議を登録する」「Entra IDでユーザーをサインインさせる」といった実装では、同じMSAL.NET更新の影響を受ける可能性があります。
Microsoft.Identity.Client 4.84.0で注目すべき変更点
Microsoft.Identity.Client 4.84.0では、トークンキャッシュ、拡張API、mTLS、クライアントアサーション、エラー診断などに関する変更が含まれています。TeamsMeetingsWebSchedulerの標準実装で全機能を使っているとは限りませんが、派生アプリや独自実装では確認が必要です。(GitHub)
| 変更カテゴリ | 主な内容 | 影響しやすいケース |
|---|---|---|
| トークンキャッシュ | 内部トークンキャッシュを無効化するためのオプションが追加 | 独自キャッシュ、分散キャッシュ、セッション管理を実装している場合 |
| Refresh Token取得 | AuthenticationResultからRefresh Tokenにアクセスする拡張メソッドが追加 | 高度な認証制御や検証コードを持つ場合 |
| Confidential Client拡張 | Attribute Tokenや追加Bodyパラメータの拡張メソッドが追加 | クライアント資格情報フローや独自パラメータを使う場合 |
| mTLS PoP | mTLS Proof-of-Possession関連の証明書オプションが追加 | 証明書ベース認証や高セキュリティ構成を使う場合 |
| Client Assertion | 一部APIの実験的機能ゲートが削除 | フェデレーション資格情報や署名付きアサーションを使う場合 |
| JSON処理 | MSAL内部のNewtonsoft.Json依存が削除され、System.Text.Json中心へ移行 | 古い依存関係やJSON関連パッケージ競合がある場合 |
| 診断 | STSエラーコードやCorrelation ID関連の改善 | 障害調査、監視、ログ分析を重視する場合 |
| バグ修正 | issuer検証、依存関係、例外処理などの修正 | 認証エラーの再現性が低い環境や複数テナント対応アプリ |
ここで重要なのは、「バージョン番号だけを見ると小さな更新に見えるが、4.46.0から4.84.0までは長期間の差分がある」という点です。単にNuGetパッケージを上げてビルドが通るかだけでなく、ログイン、ログアウト、トークン更新、Graph API実行まで確認してください。
影響範囲はTeams本体ではなく認証とGraph連携
TeamsMeetingsWebSchedulerは、Teams会議の作成そのものをTeamsクライアント上で行うのではなく、WebアプリからMicrosoft Graphを通じて会議や予定表を扱う構成です。そのため、今回の更新で見るべき影響範囲は次のようになります。(GitHub)
サインイン処理
OpenID Connectによるサインインが正常に完了するかを確認します。特に、リダイレクトURI、Cookie、セッション、ログアウトURLの動作は、ローカル環境と本番環境で差が出やすい部分です。
READMEでは、https://your_application_URL.TLD/signin-oidcやsignout-oidcに関する設定が示されています。実環境では、独自ドメイン、App ServiceのURL、リバースプロキシ、HTTPS強制設定が絡むため、PR反映前にステージング環境で確認してください。(GitHub)
Microsoft Graph API呼び出し
Teams会議の作成や予定表登録には、Graph APIの権限が必要です。READMEではOnlineMeetings.ReadWriteとCalendars.ReadWriteが示されています。MSAL.NETの更新後は、単にサインインできるだけでなく、実際にTeams会議を作成し、予定表に反映されるところまで確認する必要があります。(GitHub)
トークンキャッシュと再認証
MSAL.NETはアクセストークンの取得やキャッシュに関わります。4.84.0では内部トークンキャッシュ関連のオプションも追加されているため、独自のトークンキャッシュ、分散キャッシュ、ユーザーセッション連携を実装している場合は、ログイン直後だけでなく時間経過後の再取得も確認してください。(GitHub)
確認すべき具体例は次のとおりです。
| テスト | 確認内容 |
|---|---|
| 初回ログイン | Entra IDのサインイン画面から正常に戻るか |
| 再ログイン | Cookieやキャッシュが残った状態で異常が出ないか |
| ログアウト後ログイン | 別ユーザーでログインして会議作成できるか |
| トークン期限後 | 時間経過後にGraph API呼び出しが失敗しないか |
| 権限不足ユーザー | 適切なエラー表示になり、不要な情報をログに出さないか |
.NET Core 3.1環境ではMSAL更新だけで終わらせない
このPRの対象ファイルを見ると、現行のプロジェクトはnetcoreapp3.1をターゲットにしています。NuGet上のMicrosoft.Identity.Client 4.84.0は.NET Standard 2.0を含むため、互換性上は利用できる可能性がありますが、アプリ本体を.NET Core 3.1のまま運用し続けることは別問題です。(GitHub)
Microsoftの公式サポートポリシーでは、.NET Core 3.1は2022年12月13日にサポート終了しています。つまり、MSAL.NETだけを新しくしても、アプリ基盤そのものの保守リスクは残ります。(Microsoft)
実務では、次のように分けて判断すると失敗しにくくなります。
| 判断軸 | 短期対応 | 中長期対応 |
|---|---|---|
| MSAL.NET | 4.84.0へ更新して認証テスト | 定期的に最新minorへ追随 |
| .NET実行環境 | 既存環境でビルド・動作確認 | サポート中の.NETへ移行計画を作る |
| Microsoft Graph | 既存権限で会議作成を検証 | Graph SDKやAPI仕様の更新も確認 |
| セキュリティ | 古いMSAL利用を解消 | シークレット、証明書、監査ログを見直す |
特に本番で使っている場合、「依存関係更新」と「アプリ基盤の刷新」を同じリリースで一気に行うと、障害時の原因切り分けが難しくなります。まずMSAL.NET更新をステージングで検証し、その後に.NET移行を別プロジェクトとして計画するのが現実的です。
移行前に確認するチェックリスト
Microsoft.Identity.Clientを4.84.0へ上げる前に、次の項目を確認してください。
| チェック項目 | 確認方法 | 問題があった場合の対応 |
|---|---|---|
| 現在のMSALバージョン | dotnet list packageで確認 | 4.46.0以前なら更新候補に入れる |
| 直接参照か推移的参照か | .csprojやDirectory.Packages.propsを見る | 直接参照なら明示的に更新、推移的参照なら親パッケージも確認 |
| ターゲットフレームワーク | .csprojのTargetFrameworkを確認 | netcoreapp3.1なら将来の.NET移行も検討 |
| Graph権限 | Entra IDのアプリ登録で確認 | OnlineMeetings.ReadWrite、Calendars.ReadWriteの同意状況を確認 |
| クライアントシークレット | 有効期限を確認 | 期限切れ前にローテーション |
| リダイレクトURI | ローカル・本番URLを確認 | signin-oidcやsignout-oidcの不一致を修正 |
| トークンキャッシュ | 独自実装の有無を確認 | 期限切れ後・別ユーザー切替時の動作をテスト |
| ログ出力 | 認証エラー時のログを確認 | トークンや個人情報を出さないようにする |
更新作業の進め方
ローカルまたはステージング環境で、まず依存関係の状態を確認します。
dotnet list package
dotnet list package --outdated
対象プロジェクトでMicrosoft.Identity.Clientを4.84.0へ更新します。
dotnet add TeamsMeetigSchedulerWebsite/TeamsMeetigSchedulerWebsite.csproj package Microsoft.Identity.Client --version 4.84.0
dotnet restore
dotnet build
ビルドが通ったら、すぐに本番反映するのではなく、次の順でテストします。
| 順序 | テスト内容 | 合格基準 |
|---|---|---|
| 1 | ローカル起動 | アプリが起動し、認証画面へ遷移できる |
| 2 | サインイン | Entra ID認証後、アプリに戻れる |
| 3 | Teams会議作成 | Graph API経由でTeams会議が作成される |
| 4 | 予定表反映 | 予定表に会議情報が登録される |
| 5 | ログアウト | セッションが切れ、再ログインできる |
| 6 | 権限不足テスト | 権限不足時に適切なエラーになる |
| 7 | ステージングデプロイ | 本番相当のURL・シークレット・権限で動く |
テストで特に見落としやすいのは「初回ログインは成功するが、2回目以降や別ユーザー切替で失敗する」ケースです。これはCookie、トークンキャッシュ、アカウント選択、同意済み権限の組み合わせで起きやすいため、複数ユーザーで確認してください。
依存関係の競合にも注意する
Microsoft.Identity.Client 4.84.0では、NuGet上でMicrosoft.IdentityModel.Abstractions、System.Diagnostics.DiagnosticSource、System.Formats.Asn1、System.Text.Jsonなどの依存関係が表示されています。古いASP.NET Core、古いGraph SDK、独自に固定したパッケージがある場合、復元時や実行時にバージョン競合が起きることがあります。([NuGet][7])
競合が出た場合は、エラー文だけで判断せず、次の順に切り分けます。
| 症状 | よくある原因 | 対応 |
|---|---|---|
dotnet restoreで失敗 | 依存パッケージのバージョン固定 | 固定バージョンを確認し、必要なら更新 |
| ビルドは通るが起動で失敗 | 実行環境の古いランタイム | App Serviceやサーバーのランタイムを確認 |
| サインイン後に失敗 | リダイレクトURIやCookie設定の不一致 | 本番URLとアプリ登録を照合 |
| Graph APIが403になる | API権限または管理者同意不足 | Entra IDで権限と同意状態を確認 |
| ログに詳細が出ない | 例外処理やログ設定不足 | Correlation IDを含めて記録する |
すぐマージしてよいケース、慎重に進めるケース
今回の更新は、古いMSAL.NETを使い続けるリスクを下げる意味では前向きな変更です。ただし、すべての環境で即時マージしてよいとは限りません。
| 判断 | 状況 |
|---|---|
| すぐ進めやすい | サンプルに近い構成で、独自のトークンキャッシュやClient Assertionを使っていない |
| すぐ進めやすい | ステージング環境があり、ログインからTeams会議作成まで自動または手動テストできる |
| 慎重に進める | netcoreapp3.1のまま本番運用している |
| 慎重に進める | 独自の分散トークンキャッシュ、証明書認証、mTLS、Managed Identityを使っている |
| 慎重に進める | Graph SDKやASP.NET Core関連パッケージも古く、依存関係が複雑 |
| いったん保留も検討 | 本番相当の検証環境がなく、認証障害時の影響が大きい |
重要なのは、「4.84.0へ上げるかどうか」だけでなく、「上げたあとにTeams会議作成まで確実に確認できるか」です。認証ライブラリの更新は、画面上は小さく見えても、障害が出るとユーザーが会議を作成できなくなる可能性があります。
よくある失敗と回避策
PRがOpenなのに反映済みだと思い込む
GitHubのDependabot PRは、作成された時点ではまだ本番やmainブランチに反映されていない場合があります。今回のPRも確認時点ではOpenで、mainへ1コミットをマージしようとしている状態です。(GitHub)
運用中の環境で確認する場合は、GitHubのPRだけでなく、自社リポジトリのブランチ、デプロイ履歴、実際のビルド成果物に含まれるパッケージバージョンを確認してください。
ビルド成功だけで完了にする
MSAL.NETの更新で最も危険なのは、ビルド成功をもって完了扱いにすることです。認証ライブラリは、ビルド時よりも実行時のサインイン、トークン更新、Graph API呼び出しで問題が出やすい領域です。
最低でも、次の実動作を確認してください。
- 新規サインイン
- 既存ユーザーの再サインイン
- 別ユーザーへの切り替え
- Teams会議の作成
- 予定表への反映
- ログアウト後の再ログイン
- 権限不足時のエラー表示
.NET Core 3.1のリスクを見落とす
サンプルの現行プロジェクトはnetcoreapp3.1を対象にしていますが、.NET Core 3.1はすでにサポート終了済みです。MSAL.NETを更新しても、ランタイムやASP.NET Core基盤の古さは解消されません。(GitHub)
短期的にはMSAL更新で依存関係のリスクを下げつつ、中長期ではサポート中の.NETへ移行する計画を作るべきです。
Newtonsoft.Jsonの扱いを誤解する
4.84.0ではMSAL内部のNewtonsoft.Json依存が削除され、System.Text.Json中心へ移行しています。ただし、TeamsMeetingsWebSchedulerの現行.csprojにはNewtonsoft.Json 13.0.1の参照もあります。つまり、MSAL側の変更によってアプリ側のNewtonsoft.Json利用が自動的に消えるわけではありません。(GitHub)
アプリコードでNewtonsoft.Jsonを使っている場合は、その用途を別途確認してください。
最後にやるべきこと
今回のMicrosoft Teams documentation update: Bump Microsoft.Identity.Client from 4.46.0 to 4.84.0で、Teams一般ユーザーが操作することはありません。一方で、Teams会議作成アプリやGraph連携アプリを運用している開発者は、古いMSAL.NETを使い続けないための重要な更新として扱うべきです。
次に取るべき行動は明確です。
| 順番 | 行動 |
|---|---|
| 1 | 自社リポジトリでMicrosoft.Identity.Clientのバージョンを確認する |
| 2 | 4.46.0など古いバージョンなら、4.84.0への更新を検討する |
| 3 | ステージング環境でサインイン、Teams会議作成、予定表反映を確認する |
| 4 | 依存関係と.NET実行環境の古さを確認する |
| 5 | 問題がなければ本番反映し、認証エラーとGraph APIエラーを監視する |
特に、netcoreapp3.1のまま運用している場合は、今回のMSAL.NET更新をきっかけに、.NET基盤そのものの更新計画も立ててください。依存関係の更新は単なる保守作業ではなく、Teams連携アプリを安全に動かし続けるための土台作りです。
[3]: https://www.nuget.org/packages/Microsoft.Identity.Client/4.46.0 “
NuGet Gallery
| Microsoft.Identity.Client 4.46.0
“
[7]: https://www.nuget.org/packages/Microsoft.Identity.Client/4.84.0 “
NuGet Gallery
| Microsoft.Identity.Client 4.84.0
“

コメント