> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ユーザー認証に IDトークン のみが必要な従来型の Web アプリ向けに、Form Post を使用した Implicit Flow の仕組みと、これを使用すべき理由を説明します。

# Form Post を使用した Implicit Flow

<Warning>
  「implicit」という用語に惑わされないでください。OAuth では現在、SPA でアクセストークンを取得する目的で implicit grant を使用することは推奨されていません。しかし、Form Post を使用した Implicit Flow が扱うシナリオはそれとはまったく異なり、SPA での利用が非推奨となった **セキュリティ上の問題の影響は受けません**。具体的には、Form Post を使用した Implicit Flow は SPA ではなく、従来型の Web アプリに適用されます。取得するのはアクセストークンではなく IDトークン であり、用途もまったく異なります。また、このフローでは、トークンを URL フラグメントに含める (SPA のように) 代わりに POST を使用するため、ブラウザ履歴への攻撃やリダイレクトヘッダーなどによってトークンの一部が漏洩するリスクを回避できます。
</Warning>

従来型の Web アプリで Web サインインを実現するには、さまざまなフローで <Tooltip tip="OpenID: アプリケーションがログイン情報を収集および保存することなく、ユーザーの本人確認を行えるようにする認証のオープン標準です。" cta="用語集を見る" href="/ja/docs/glossary?term=OpenID">OpenID</Tooltip> Connect (OIDC) を使用できます。一般的なフローの 1 つでは、アプリのバックエンドで実行する認可コードフローを使用して <Tooltip tip="ID Token: リソースへのアクセスではなく、クライアント自身のための認証情報です。" cta="用語集を見る" href="/ja/docs/glossary?term=ID+token">IDトークン</Tooltip> を取得します。この方法は効果的で堅牢ですが、Web アプリでシークレットを取得して管理する必要があります。サインインを実装するだけでよく、API 呼び出し用の <Tooltip tip="Access Token: API へのアクセスに使用される、opaque な文字列または JWT 形式の認可クレデンシャルです。" cta="用語集を見る" href="/ja/docs/glossary?term=access+tokens">アクセストークン</Tooltip> を取得する必要がないのであれば、その負担は避けられます。

Form Post を使用した Implicit Flow は、<Tooltip tip="Security Assertion Markup Language (SAML): パスワードなしで 2 者間の認証情報のやり取りを可能にする標準化されたプロトコルです。" cta="用語集を見る" href="/ja/docs/glossary?term=SAML">SAML</Tooltip> や WS-Federation とよく似た方法で、OIDC を使って Web サインインを実装します。Web アプリは、シークレットや追加のバックエンド呼び出しなしで、フロントチャネルを通じてトークンを要求し取得します。この方法であれば、アプリケーション内でシークレットを取得、維持、使用、保護する必要はありません。

<div id="how-it-works">
  ## 仕組み
</div>

<Warning>
  このフローはログイン専用のユースケースで使用してください。ユーザーのログイン時にアクセストークンも要求して API を呼び出す必要がある場合は、[Authorization Code Flow with PKCE](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce) または [Hybrid Flow](/ja/docs/get-started/authentication-and-authorization-flow/hybrid-flow) を使用してください。
</Warning>

<Frame>
  <img src="https://mintcdn.com/translations/6GE5Z24GDCZehiJ9/docs/images/cdy7uua7fh8z/6m0uE4E7Hpzbdhyh9dEuYK/e36c910ff47a7540bf27e23c02822624/auth-sequence-implicit-form-post.png?fit=max&auto=format&n=6GE5Z24GDCZehiJ9&q=85&s=fc91df5d31b18b14d5fa8177e1537fcf" alt="フロー - Form Post を使用した Implicit - 認可シーケンス図" width="1500" height="712" data-path="docs/images/cdy7uua7fh8z/6m0uE4E7Hpzbdhyh9dEuYK/e36c910ff47a7540bf27e23c02822624/auth-sequence-implicit-form-post.png" />
</Frame>

1. ユーザーがアプリで **Login** をクリックします。
2. Auth0 の SDK は、要求された認証情報の種類を示す `response_type` パラメーター `id_token` を渡して、ユーザーを Auth0 の認可サーバー (`/authorize` エンドポイント) にリダイレクトします。また、セキュリティを確保するために `response_mode` パラメーター `form_post` も渡します。
3. Auth0 の認可サーバーは、ユーザーをログインと認可のプロンプト画面にリダイレクトします。
4. ユーザーは構成済みのログインオプションのいずれかで認証を行い、Auth0 がアプリに付与する権限の一覧が表示された同意画面が表示される場合があります。
5. Auth0 の認可サーバーは、IDトークンとともにユーザーをアプリにリダイレクトします。

<div id="how-to-implement-it">
  ## 実装方法
</div>

[Express OpenID Connect SDK](https://www.npmjs.com/package/express-openid-connect) を使用すると、Form Post を使用した Implicit Flow を安全に実装できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  [Auth0 Single-Page App SDK](/ja/docs/libraries/auth0-single-page-app-sdk) と [Single-Page Quickstarts](/ja/docs/quickstart/spa) は最新の推奨事項に準拠しており、[Authorization Code Flow with PKCE](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce) を使用します。
</Callout>

最後に、チュートリアルに従って API エンドポイントを使用し、[Form Post を使用した Implicit Flow を使ったログインの追加](/ja/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/add-login-using-the-implicit-flow-with-form-post)を行うこともできます。

<div id="learn-more">
  ## 詳しくはこちら
</div>

* [Auth0 Rules](/ja/docs/customize/rules)
* [Auth0 Hooks](/ja/docs/customize/hooks)
* [トークン](/ja/docs/secure/tokens)
* [トークンのベストプラクティス](/ja/docs/secure/tokens/token-best-practices)
* [どの OAuth 2.0 フローを使用すべきですか？](/ja/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use)
* [Implicit Flow 使用時のリプレイ攻撃を軽減する](/ja/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/mitigate-replay-attacks-when-using-the-implicit-flow)
