カテゴリ: Flask 更新日: 2025/12/25

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を利用できます。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説