ダッシュボード
認証

サインイン プロバイダー

Google、Apple、GitHub、Microsoft を設定します。

プロジェクトでは、Google、Apple、GitHub、Microsoft のサインインを有効にできます。 HALO はアップストリームのコールバック交換を所有しますが、アプリケーションは許可リストに登録されたクライアント コールバックで有効期間の短いワンタイム コードを受け取ります。

#プロジェクト コールバック URL

https://api.agihalo.com/api/v1/auth/projects/{PROJECT_ID}/providers/{PROVIDER}/callback

#サポートされるプロバイダー

プロバイダアップストリーム アプリケーションコールバック メソッド
GoogleOAuth Web アプリケーションGET
Appleサービス ID / Apple でのサインインPOST フォーム応答
GitHubOAuth アプリGET
Microsoftアプリ登録 / Web リダイレクトGET

クライアント ID とシークレットを HALO に保存し、プロバイダー スコープを選択して、サインインを有効にします。保存されたシークレットは暗号化され、決して返されません。

#ブラウザ + PKCE フロー

// 1. Create an S256 PKCE verifier/challenge in your app.
const url = new URL(
  "https://api.agihalo.com/api/v1/auth/providers/google/authorize"
);

url.searchParams.set("apikey", HALO_PROJECT_PUBLISHABLE_KEY);
url.searchParams.set("redirect_to", "https://app.example.com/auth/callback");
url.searchParams.set("code_challenge", codeChallenge);
url.searchParams.set("code_challenge_method", "S256");
url.searchParams.set("state", clientState);

window.location.assign(url.toString());
  1. 1
    アプリが認証を開始します

    公開可能なキー、許可リストに登録されたクライアント コールバック、状態、および S256 チャレンジを含む HALO プロバイダー承認 URL を開きます。

  2. 2
    HALO はプロバイダーを呼び出す

    HALO は 1 回限りの状態を保存し、プロバイダー リクエストを送信し、プロジェクト固有のコールバックを受信します。

  3. 3
    コールバックはコード

    HALO は、正確なクライアントにリダイレクトします。有効期間の短いコードと元の状態を含むコールバック。

  4. 4
    アプリがコードを交換します

    元の検証者とリダイレクト URL を送信して、プロジェクト ユーザー セッションを受信します。

#セキュリティ動作

  • 認可とコールバック応答はストアなしポリシーを使用します。
  • リダイレクト URL はプロジェクト設定と正確に一致する必要があります。
  • 状態コードとワンタイム コードは一度消費されて期限切れになります。
  • 未確認のプロバイダーの電子メールとプロジェクト間の ID の競合はフェール クローズされます。