コンテンツへスキップ
NextAuth.js v4からの移行? 参照 移行ガイド.

providers/azure-devops

AzureDevOpsProfile

参照

Azure DevOps Services REST API 7.0 · プロファイル · 取得

拡張

プロパティ

coreAttributes

coreAttributes: {
  Avatar: {
     value: {
        value: string;
     };
  };
};
Avatar
Avatar: {
  value: {
     value: string;
  };
};
Avatar.value
value: {
  value: string;
};
Avatar.value.value
value: string;

displayName

displayName: string;

emailAddress

emailAddress: string;

id

id: string;

default()

default<P>(options): OAuthConfig<P>

型パラメーター

型パラメーター
P extends AzureDevOpsProfile

パラメーター

パラメーター
optionsOAuthUserConfig<P> & { scope: string; }

戻り値

OAuthConfig<P>

非推奨

現在も利用可能ですが、MicrosoftはAzure DevOps OAuthのサポートを終了し、代わりにMicrosoft Entra IDの使用を推奨しています。

ドキュメント

Microsoft ドキュメント · Azure DevOps · OAuth 2.0 を使用した REST API へのアクセスの承認

設定

アプリケーションの登録

必要な詳細情報を提供してください

  • 会社名
  • アプリケーション名
  • アプリケーションのウェブサイト
  • 承認コールバックURL
    • 本番環境ではhttps://example.com/api/auth/callback/azure-devops
    • 開発環境ではhttps://localhost/api/auth/callback/azure-devops
  • 承認されたスコープ
    • 最低限必要なのはユーザー プロファイル (読み取り)です

「アプリケーションの作成」をクリックします

⚠️

ローカルホストでもHTTPSを使用する必要があります

⚠️

スコープを変更するには、アプリケーションを削除して新しく作成する必要があります

次のデータは次のステップで関連します

  • アプリID
  • クライアントシークレット(「表示」ボタンをクリックした後、「アプリシークレット」エントリは無視してください)
  • 承認済みスコープ

環境変数の設定

.env.localに以下のエントリを作成します

AZURE_DEVOPS_APP_ID=<copy App ID value here>
AZURE_DEVOPS_CLIENT_SECRET=<copy generated client secret value here>
AZURE_DEVOPS_SCOPE=<copy space separated Authorized Scopes list here>

import AzureDevOps from "@auth/core/providers/azure-devops"
...
providers: [
  AzureDevOps({
    clientId: process.env.AZURE_DEVOPS_APP_ID,
    clientSecret: process.env.AZURE_DEVOPS_CLIENT_SECRET,
    scope: process.env.AZURE_DEVOPS_SCOPE,
  }),
]
...

リフレッシュトークンのローテーション

以下の点を考慮して、メインガイドを参考にしてください

async jwt({ token, user, account }) {
  ...
  // The token has an absolute expiration time
  const accessTokenExpires = account.expires_at * 1000
  ...
}
 
async function refreshAccessToken(token) {
  ...
  const response = await fetch(
    "https://app.vssps.visualstudio.com/oauth2/token",
    {
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      method: "POST",
      body: new URLSearchParams({
        client_assertion_type:
          "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
        client_assertion: process.env.AZURE_DEVOPS_CLIENT_SECRET,
        grant_type: "refresh_token",
        assertion: token.refreshToken,
        redirect_uri:
          process.env.NEXTAUTH_URL + "/api/auth/callback/azure-devops",
      }),
    }
  )
  ...
  // The refreshed token comes with a relative expiration time
  const accessTokenExpires = Date.now() + newToken.expires_in * 1000
  ...
}
Auth.js © Balázs Orbán and Team -2024