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