LINEログインのstateが一致しないとき|開始した認証と戻り先を照合する
この記事の結論
LINEログインのstate不一致を、保存した値の欠落・別のログイン開始・値の不一致に分けて調べます。照合を省かず、再試行と調査メモを安全に設計する確認順です。
最終更新:2026年11月12日
LINEログインから戻ったときにstateが一致しなければ、その戻りが、自社サイトで開始したログインに対応することを確認できていません。照合を外してログインを成功させるのではなく、開始時に保存した値、戻りで受け取った値、両者を対応させる仕組みを順に確認します。
この記事は、ウェブアプリへLINEログインの認可コードフローを組み込む担当者向けです。LIFFのログインループや、同意画面のキャンセルとは切り分けます。画面上の「state mismatch」等の文言は、利用する認証ライブラリーや自社実装によって異なります。
stateは、ログインの開始と戻りを対応させる値
LINEログインの公式手順では、stateをログインセッションごとにアプリ側でランダムに生成し、認可要求へ含めます。成功側のレスポンスを受け取ったら、開始時に指定した値との一致を確認します。これはCSRF対策のための確認で、ユーザー名や顧客番号の代わりではありません。
stateの期待値を、戻ってきた値で上書きしてから比較しても、開始との対応は確かめられません。すべての利用者で同じ固定値を使うことも避けます。認証ライブラリーを利用しているなら、まずそのライブラリーが生成・保存・検証を担っている範囲を確認し、独自処理を重ねて値を書き換えていないかを調べます。
認可コードを受信しても、この照合や後続のトークン検証が終わったとは限りません。顧客情報の表示や会員への紐づけは、必要な認証と権限の確認後に進めます。
値が「ない」のか、「違う」のかを分ける
以下は調査のための分類です。特定の原因が必ず当てはまるという意味ではありません。
開始時の記録が見つからない場合は、認証を開始したときに値を保存できたか、その記録をコールバック処理から参照できるかを調べます。セッションやCookieを使う構成なら、開始と戻りのドメイン・パス、Cookieの送信条件、保存先、有効期間などが確認対象です。原因を確かめずにCookieの保護設定を弱める対処はしません。
戻りのstateを取り出せない場合は、認可要求へ含めたか、設定したレスポンス形式に合う読み取りをしているか、途中の転送処理で必要な情報が落ちていないかを確認します。同意を拒否したエラーレスポンスではstateが任意項目とされているため、成功側と同じ前提にせず結果を分けます。
両方に値があるが一致しない場合は、どのログイン開始と照合しているかを追います。二つのタブや連続クリックで別の認証を開始し、後の値が前の記録を上書きしていないか、古い戻り先を開き直していないか、文字列を加工していないかを確認します。不一致だけで攻撃や利用者の操作ミスと断定はできませんが、未検証の戻りを成功扱いにはしません。

再試行は、新しいログインの開始から行う
利用者には、たとえば「ログインの開始情報を確認できませんでした。元の画面からもう一度ログインしてください」と案内します。これは架空の表示例です。途中の入力が保存されているかは自社の実装で確認し、保存していない内容まで「引き継がれます」と約束しないようにします。
古いコールバックURLを再読込して成功を試す運用は避けます。公式手順では、認可コードは10分間有効で1回だけ利用できます。やり直しは元の安全な入口から新しく開始し、同じコードの再利用や、無条件の自動ログインループに頼らない設計にします。
開発担当へ渡すメモには、発生時刻、起点の画面、ブラウザーの種類、単一タブか複数タブか、保存記録の有無、値が一致したかを残します。認可コード、トークン、stateの実値、Cookie、コールバックURL全体を問い合わせ文や共有資料に貼る必要はありません。 自社の調査用IDで記録を対応させ、顧客の入力内容と分けて調べます。
nonce・PKCEとの違いも確認する
stateの照合だけですべての認証検証が終わるわけではありません。nonceを使った場合の確認はIDトークンの検証で扱います。PKCEは認可コードの横取りへの対策で、LINEの公式資料は導入を推奨しています。それぞれを同じ値だと思って置き換えず、利用するライブラリーと公式手順に沿って確認します。
公開前は、承認されたテスト環境で通常のログイン、二つのタブからの開始、古い戻りの再利用、開始記録が失われた場合、同意キャンセルを分けて試します。異常時に別の人の会員情報へ紐づかず、本人が次の操作を選べることまでを確認対象にしてください。
※仕様確認日:2026年11月12日。切り分けとテスト項目は設計上の提案です。実サービスの認証変更やログイン試験を行った記録ではありません。制作主体とAI利用は制作・確認方針に記載しています。