First Of All
業務等で使うなら素直に MSAL.PS や、Microsoft Graph PowerShell SDK を利用してトークン取得しましょう。
自分で実装しても勉強以外の役にはたぶん立たないです。
Windows 入ってたらとりあえず動くので、勉強会用にそれぞれのフローのコードを書いてみたのだが、勉強会する暇なくて腐ってたので供養。
クライアント資格情報フロー
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow
めちゃ簡単。
証明書でやるパターンは全然わからんし、めっちゃ .Net のクラス呼んでるので多分 C# で書いたほうが勉強になる。
認可コード付与 (Authorization Code Grant)
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-auth-code-flow
ドキュメントは認証コードなのは無視だ!リフレッシュ トークンの検証をした時期があって、その辺のコードも残ってる。
PowerShell のローカルサーバーはよく止まってしまうんだけど、エラーハンドリングのやり方がわからない。
無駄に PKCE にも対応しているぞ。
デバイス許可付与 (Device Authorization Grant)
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-device-code
これも特に変なことはしてない。
おわり
On-Behalf-Of とか消えつつある SAML Bearer Assertion フローは気が向けば書くかも。