🔍
Azure AD の OAuth で Azure DevOps REST API を実行する
Azure DevOps には REST API が提供されており、さまざまな操作ができます。Azure DevOps も SharePoint と同様に、歴史的な経緯から複数の認証方法をサポートしています。
- Personal Access Token (PAT) による認証
-
https://app.vssps.visualstudio.com/oauth2/authorize
エンドポイントを使用した OAuth による認証 - Azure AD のエンドポイントを使用した OAuth による認証
もっともよく使われるのは PAT による認証です。PAT は Azure Repos の Git にアクセスする場合にも利用されるため、さまざまな場面で利用されます。PAT の場合は Basic 認証 (Authorization ヘッダーに空のユーザー名と PAT を Base64 エンコードして渡します) となるため、OAuth と比べて認証フローが簡単です。
ただし、Azure DevOps を他のサービスと連携する際に毎回 PAT を要求するのは非現実的です。そのため、Azure AD で認証する必要があります。Azure AD の アプリの登録 - API のアクセス許可 で Azure DevOps を選択できるため簡単そうに見えます。しかし、実際にアクセス トークンを指定して API を呼び出すと HTTP 203 エラーコードが返されます。
これは OAuth のフローで scopes に https://app.vssps.visualstudio.com/user_impersonation
を指定していることが原因です。Azure AD のポータル上ではこのように表示されますが、499b84ac-1321-427f-aa17-267ca6975798/user_impersonation
が正解です。これについてはドキュメントに記載がなく、MSAL のサンプルを参照する必要があります。
Discussion