カテゴリ: Flask 更新日: 2026/01/12

FlaskでOAuth2認証を完全解説!初心者でも理解できる安全なログインの仕組み

FlaskでOAuth2認証を使う仕組みをわかりやすく解説
FlaskでOAuth2認証を使う仕組みをわかりやすく解説

先生と生徒の会話形式で理解しよう

生徒

「Flaskでログイン機能を作りたいんですが、パスワードを自分で管理するのは少し不安です。他の方法ってありますか?」

先生

「Flaskでは、OAuth2という仕組みを使って、安全で便利なログイン機能をつくれます。例えばGoogleやTwitterでログインする仕組みです。」

生徒

「SNSのアカウントでログインできる仕組みって、どう動いているんですか?」

先生

「では、まずOAuth2の基本から、初心者でも確実に理解できるように説明していきましょう!」

1. OAuth2認証とは?初心者向けにやさしく解説

1. OAuth2認証とは?初心者向けにやさしく解説
1. OAuth2認証とは?初心者向けにやさしく解説

OAuth2(オーオースツー)は、インターネットでよく使われている認証(本人確認)の仕組みです。これは、あなたが作るFlaskアプリがパスワードを扱わずに、安全にログインしてもらうための方法です。

例えば、Googleでログインできるサイトを見たことがあると思います。そのとき、あなたのパスワードをサイトに教える必要はありません。Googleが「この人は本人だよ」と証明してくれる仕組みがOAuth2です。

初心者にもわかりやすく例えると、次のようなイメージです。

例え:図書館で本を借りるとき、あなたは図書館に「免許証のコピー」を渡しませんよね。かわりに本物の免許証を係員に見せて、係員が本人確認してくれます。OAuth2では、GoogleやTwitterが「係員」の役割をしてくれるのです。

2. OAuth2が使われる理由(初心者が知るべきポイント)

2. OAuth2が使われる理由(初心者が知るべきポイント)
2. OAuth2が使われる理由(初心者が知るべきポイント)

FlaskアプリでOAuth2がよく使われる理由は次のとおりです。

  • パスワードを自分で保存しなくてよい
  • 安全性が高い
  • ユーザーがログインしやすい
  • Google・Twitterなど多くのサービスに対応

特に「パスワードを保存しなくてよい」のは重要です。プログラミング初心者がパスワード管理をすると、セキュリティ事故につながりやすいため、OAuth2を利用することで安全な仕組みを簡単に作れます。

3. FlaskでOAuth2を使うときの流れ

3. FlaskでOAuth2を使うときの流れ
3. FlaskでOAuth2を使うときの流れ

FlaskアプリでOAuth2認証を行うときの全体の流れを、できるだけシンプルに説明します。

  1. ユーザーが「Googleでログイン」ボタンを押す
  2. FlaskアプリがGoogleのログイン画面に案内する
  3. ユーザーがGoogleでログインする
  4. Googleが「本人確認OK」という証明をFlaskに返す
  5. Flaskがユーザーをログイン済みにする

この証明書のようなデータが「アクセストークン」と呼ばれます。初心者は、アクセストークン=本人確認ができたという証明データと覚えておけばOKです。

4. FlaskでOAuth2を使う準備(Authlibを利用)

4. FlaskでOAuth2を使う準備(Authlibを利用)
4. FlaskでOAuth2を使う準備(Authlibを利用)

FlaskでOAuth2を使うときに便利なライブラリがAuthlib(オースリブ)です。これはOAuth2を簡単に扱うための拡張機能で、Flaskとの相性もとても良いです。

まずはインストールが必要です。


pip install authlib flask

5. FlaskでGoogleログインを実装するコード例

5. FlaskでGoogleログインを実装するコード例
5. FlaskでGoogleログインを実装するコード例

以下は、OAuth2を使ってGoogleログインをするもっとも基本的なサンプルです。設定値は実際のGoogle Cloudの情報に置き換えてください。


from flask import Flask, redirect, url_for, session
from authlib.integrations.flask_client import OAuth

app = Flask(__name__)
app.secret_key = "your_secret_key"

oauth = OAuth(app)
google = oauth.register(
    name="google",
    client_id="GOOGLE_CLIENT_ID",
    client_secret="GOOGLE_CLIENT_SECRET",
    access_token_url="https://oauth2.googleapis.com/token",
    authorize_url="https://accounts.google.com/o/oauth2/auth",
    api_base_url="https://www.googleapis.com/oauth2/v1/",
    userinfo_endpoint="https://openidconnect.googleapis.com/v1/userinfo",
    client_kwargs={"scope": "openid email profile"},
)

@app.route("/")
def index():
    return '<a href="/login">Googleでログイン</a>'

@app.route("/login")
def login():
    redirect_uri = url_for("authorize", _external=True)
    return google.authorize_redirect(redirect_uri)

@app.route("/authorize")
def authorize():
    token = google.authorize_access_token()
    user = google.get("userinfo").json()
    session["user"] = user
    return f"ログインしました: {user['email']}"

if __name__ == "__main__":
    app.run(debug=True)

6. コードの流れを初心者向けに解説

6. コードの流れを初心者向けに解説
6. コードの流れを初心者向けに解説

このコードが行っていることを、できるだけかんたんに説明します。

  • oauth.register:Googleと通信するための設定
  • /login:Googleのログイン画面に案内するページ
  • /authorize:ログイン後に戻ってくる場所
  • session["user"]:ログインしたユーザー情報を保存

セッションとは、ユーザーがログインしている間だけ情報を持っておく箱のようなものです。

7. FlaskでOAuth2を利用するときの注意点

7. FlaskでOAuth2を利用するときの注意点
7. FlaskでOAuth2を利用するときの注意点

OAuth2は便利ですが、次の点には注意が必要です。

  • secret_keyは絶対に公開しない
  • GoogleのクライアントID・シークレットも秘密にする
  • HTTPSを使うのが基本
  • テスト環境と本番環境でURLをきちんと設定する

これらを守ることで、Flaskアプリのセキュリティが高まり、安心してOAuth2を利用できます。

まとめ

まとめ
まとめ

FlaskとOAuth2認証の全体像を振り返る

ここまで、Flaskを使ったOAuth2認証について、基礎から実装例、注意点まで順を追って解説してきました。 OAuth2は、現代のWebアプリケーションにおいて非常に重要な認証方式であり、セキュリティと利便性を両立できる点が大きな特徴です。 特にFlaskのような軽量なWebフレームワークと組み合わせることで、初心者でも比較的シンプルに安全なログイン機能を構築できます。

従来のユーザー名とパスワードを自前で管理する仕組みでは、パスワード漏えいや不正アクセスのリスクが常につきまといます。 その点、OAuth2を利用したログインでは、GoogleやTwitterといった信頼性の高い外部サービスが本人確認を担当してくれるため、 Flaskアプリ側ではパスワードを保持する必要がありません。 これは、プログラミング初心者にとっても非常に大きな安心材料となります。

OAuth2の仕組みを正しく理解する重要性

OAuth2認証を使ううえで大切なのは、「なぜ安全なのか」「どこまでを自分のアプリが担当しているのか」を理解することです。 本記事で説明したように、ユーザーがログインボタンを押すと、Flaskアプリは認証を直接行うのではなく、 外部の認証プロバイダーに処理を委ねます。 そして認証が成功したという結果だけを、アクセストークンという形で受け取ります。

この流れを理解しておくことで、OAuth2の設定ミスやセキュリティ上の事故を防ぎやすくなります。 単にサンプルコードをコピーするだけでなく、 「どの処理が認証で、どの処理がログイン後の処理なのか」を意識しながら実装することが大切です。

FlaskでOAuth2を扱う際の実装ポイント

FlaskでOAuth2認証を実装する際には、Authlibのような専用ライブラリを使うことで、コード量を抑えつつ安全な実装が可能になります。 oauth.registerで行う設定は少し項目が多く感じるかもしれませんが、 一つ一つは「どのサービスと通信するか」「どの情報を取得したいか」を指定しているだけです。 仕組みを理解すると、設定内容の意味も自然と見えてきます。

また、Flaskのsessionを使ってログイン状態を管理する点も重要です。 セッションはユーザーがログインしている間だけ有効な情報を保存する仕組みであり、 OAuth2認証後のユーザー情報を安全に扱うために欠かせません。 ログイン処理とセッション管理を正しく組み合わせることで、実用的なWebアプリケーションが完成します。

理解を深めるためのサンプルプログラム

ここで、記事内で学んだ内容を振り返るために、構成が分かりやすい簡易的なサンプルをもう一度確認してみましょう。 以下のコードは、ログイン状態をチェックしながら表示を切り替える例です。


from flask import Flask, session

app = Flask(__name__)
app.secret_key = "your_secret_key"

@app.route("/")
def index():
    if "user" in session:
        return "ログイン中です"
    else:
        return "ログインしていません"

if __name__ == "__main__":
    app.run(debug=True)

このように、OAuth2認証そのものは外部サービスに任せつつ、 Flask側では「ログインしているかどうか」をシンプルに判定するだけで済みます。 これが、OAuth2とFlaskを組み合わせる大きなメリットです。

先生と生徒の振り返り会話

生徒

「FlaskでOAuth2を使うと、パスワードを扱わなくていい理由がよく分かりました。 認証の処理を外部に任せるって、最初は不安でしたが、むしろ安全なんですね。」

先生

「その通りです。初心者ほど、自前でパスワード管理をしない方が安全なケースは多いです。 OAuth2は、すでに実績のある仕組みなので、安心して利用できます。」

生徒

「Authlibを使えば、Flaskでも意外と少ないコードでログイン機能が作れるのも驚きでした。 流れを理解してから見ると、コードの意味もちゃんと読めます。」

先生

「それが一番大事なポイントですね。 OAuth2は仕組みを理解すれば応用もしやすく、他の認証サービスにも対応できます。 今回学んだ内容を土台に、ぜひ実際のアプリ開発にも挑戦してみてください。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリのセキュリティテストを効率的に行う方法まとめ
New2
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New3
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New4
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説