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

FlaskでOAuth2認可を実装しよう!初心者でもわかる安全なログイン認証の基本

FlaskのAPIで認可(OAuth2など)を実装する基本的な考え方
FlaskのAPIで認可(OAuth2など)を実装する基本的な考え方

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

生徒

「Webアプリで他のサービスのアカウントを使ってログインさせる方法ってあるんですか?」

先生

「はい、それにはOAuth2という仕組みを使うと便利です。たとえばGoogleやLINE、Facebookなどのアカウントを使ったログインがそれですね。」

生徒

「それって安全なんですか?それに難しそう…」

先生

「とても安全ですよ。しかも、Flaskを使えば初心者でも意外と簡単にOAuth2認可を実装できます。一緒に仕組みから学んでいきましょう!」

1. OAuth2認可とは?初心者にもわかる簡単な説明

1. OAuth2認可とは?初心者にもわかる簡単な説明
1. OAuth2認可とは?初心者にもわかる簡単な説明

OAuth2(オーオース・ツー)とは、他のサービスのアカウントを使ってログインする仕組みです。たとえば、あなたが「Googleアカウントでログイン」ボタンを見たことがあるなら、それはOAuth2を使っています。

OAuth2は「認証(にんしょう)」と「認可(にんか)」を分けて考えるのが特徴です。

  • 認証:この人が本当に本人かどうかを確認する。
  • 認可:この人がこの操作をしてもいいかを確認する。

OAuth2は他人の家に入る前に、その家の持ち主が「この人にはリビングだけ見せてもいいよ」と許可する仕組みに似ています。

2. FlaskとOAuth2の関係とは?

2. FlaskとOAuth2の関係とは?
2. FlaskとOAuth2の関係とは?

Flask(フラスク)はPythonで作られたWebアプリケーションのフレームワークです。とても軽量で、初心者にも扱いやすいのが特徴です。

Flaskを使うと、Webサイトを簡単に作れるだけでなく、OAuth2を使ったログイン機能やAPIアクセスも実装できます。

OAuth2をFlaskで使うには、「Authlib(オースリブ)」という便利なライブラリを使うのが一般的です。

3. OAuth2を使ったログインの流れを図でイメージしよう

3. OAuth2を使ったログインの流れを図でイメージしよう
3. OAuth2を使ったログインの流れを図でイメージしよう

OAuth2の仕組みは少し複雑なので、駅の改札のようなイメージで考えると分かりやすいです。

  1. ユーザーが「ログイン」ボタンをクリック。
  2. 外部サービス(Googleなど)のログインページに移動。
  3. ユーザーがログインして「許可」ボタンを押す。
  4. トークン(合言葉のような鍵)が発行される。
  5. このトークンを使って、自分のアプリにログイン完了!

トークンとは、一定時間だけ使える使い捨ての「通行証」のようなものです。パスワードそのものではないので、安全です。

4. 必要なPythonライブラリをインストールしよう

4. 必要なPythonライブラリをインストールしよう
4. 必要なPythonライブラリをインストールしよう

まず、OAuth2を扱うために必要なPythonライブラリをインストールします。


pip install Flask Authlib

Authlibは、Flaskと相性の良いOAuth2ライブラリです。

5. FlaskでOAuth2ログインを実装してみよう(Google編)

5. FlaskでOAuth2ログインを実装してみよう(Google編)
5. FlaskでOAuth2ログインを実装してみよう(Google編)

以下はGoogleアカウントを使ったOAuth2ログインのサンプルコードです。簡単な構成で、OAuth2の流れを理解できます。


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

app = Flask(__name__)
app.secret_key = 'これはとても大事な秘密のカギ'
oauth = OAuth(app)

google = oauth.register(
    name='google',
    client_id='あなたのGoogleクライアントID',
    client_secret='あなたのシークレットキー',
    access_token_url='https://accounts.google.com/o/oauth2/token',
    access_token_params=None,
    authorize_url='https://accounts.google.com/o/oauth2/auth',
    authorize_params=None,
    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 homepage():
    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()
    resp = google.get('userinfo')
    user_info = resp.json()
    session['user'] = user_info
    return f"こんにちは、{user_info['name']}さん!"

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

6. セキュリティのポイント

6. セキュリティのポイント
6. セキュリティのポイント

OAuth2は非常に安全な仕組みですが、セキュリティを高めるために以下の点に注意しましょう。

  • secret_keyは絶対に公開しない:公開リポジトリに載せないように!
  • HTTPSを使う:通信が暗号化され、トークンの盗聴リスクが減ります。
  • トークンの有効期限に注意:古いトークンは使えないように設定できます。

7. FlaskとOAuth2を使うメリット

7. FlaskとOAuth2を使うメリット
7. FlaskとOAuth2を使うメリット

OAuth2認可を使うことで、以下のようなメリットがあります。

  • ユーザーの登録手間が減る:GoogleやLINEなどのアカウントですぐログインできます。
  • 安全性が高い:パスワードを直接扱わないので、情報漏えいリスクが低いです。
  • Flaskとの相性が良い:Flaskはコードがシンプルで、初心者にもわかりやすくOAuth2を組み込めます。

まとめ

まとめ
まとめ

FlaskとOAuth2認可の仕組みを学ぶことで、外部サービスのアカウントを利用した安全なログイン機能を自分のWebアプリに組み込めるようになります。今回の記事では、OAuth2の基本的な考え方から、FlaskとAuthlibを使った実際のログイン実装までを順序よく確認しました。OAuth2は一見難しく感じるかもしれませんが、目的は「他のサービスが発行した安全なトークンを使ってログインさせる仕組み」を提供することであり、アプリ側ではパスワードを扱わずに済むため、セキュリティと利便性を同時に向上させることができます。 またOAuth2は単なるログインではなく、認証・認可を柔軟に扱える点が特徴です。GoogleやLINEといった外部サービスは、ユーザーの許可に応じて「メールアドレスだけ取得」「プロフィール画像も取得」など、権限を細かく制御できる仕組みを提供しており、FlaskではAuthlibを使ってこれを簡単に扱えるようになっています。 さらに、OAuth2の流れを理解するうえでは「許可画面→トークン発行→ユーザー情報取得」という一連の処理を意識すると、仕組みが見えやすくなります。この流れはどのプロバイダでも基本的に同じであり、Google以外のサービスに拡張する際にも応用できます。 FlaskによるOAuth2認可実装の利点は、コードが短く読みやすく、初心者でも扱いやすいという点です。開発を進める中で、トークン管理やHTTPS設定、secret_keyの保護などセキュリティ面で注意すべき点はありますが、基礎を押さえておけば、安全で柔軟なログイン機能を実装できます。ここからは、今回学んだ内容を応用し、より実践的な「ログイン後のページ保護処理」を追加したサンプルコードを紹介します。

応用例:ログイン後のページを保護するサンプルコード


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

app = Flask(__name__)
app.secret_key = "安全に管理すべき大事なカギ"

oauth = OAuth(app)
google = oauth.register(
    name="google",
    client_id="あなたのクライアントID",
    client_secret="あなたのシークレットキー",
    access_token_url="https://accounts.google.com/o/oauth2/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():
    if "user" in session:
        return f"ようこそ、{session['user']['name']}さん!<br><a href='/logout'>ログアウト</a>"
    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 redirect(url_for("index"))

@app.route("/logout")
def logout():
    session.pop("user", None)
    return "ログアウトしました。<a href='/'>トップへ戻る</a>"

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

この応用コードでは、ログイン状態を session で管理し、ログインしていない場合はトップページでログインボタンだけを表示し、ログイン済みであればユーザー情報を表示するという流れを作っています。実際のアプリでは、この仕組みを使って「ログインしないとアクセスできないページ」を作ったり、ユーザー情報を使った機能を実装したりできます。 FlaskとOAuth2の組み合わせは、初心者から上級者まで幅広い開発者にとって使いやすく、Google・LINE・GitHubなどさまざまな外部サービスのアカウントでログインできる柔軟なアプリを構築できる力になります。OAuth2の考え方は現代のWeb開発に必須ともいえるため、今回の記事をきっかけにさらに深く学んでいくと、より高度なセキュリティ設計や外部API連携も扱えるようになります。

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

生徒

「OAuth2ってもっと難しいものだと思っていたんですが、仕組みがわかると意外とシンプルに見えてきました!」

先生

「その通りです。基本は『許可ページへ移動 → トークンを受け取る → ユーザー情報を取得する』という流れを理解することなんです。」

生徒

「FlaskとAuthlibなら短いコードでGoogleログインまで作れるのも驚きでした。」

先生

「FlaskはシンプルなのでOAuth2と相性がいいんですよ。ログイン後のページ制限やログアウト処理を加えることで、より実践的なアプリになります。」

生徒

「トークンを扱うと聞くと難しそうですが、パスワード自体を扱わないのは安心ですね!」

先生

「まさにそこがOAuth2の良さです。仕組みを理解すれば、Google以外のサービスにも応用できますよ。」

生徒

「ありがとうございます!安全なログイン機能を持つアプリも自分で作れそうな気がします!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

FlaskでGoogleログイン機能を実装するにはどうすればいいですか?

FlaskでGoogleログイン機能を実装するには、OAuth2という仕組みを使います。Pythonライブラリ「Authlib」を使うことで、Googleの認証と認可の仕組みを簡単に取り入れることができます。トークンを使ったログイン処理を行うことで、パスワードを直接扱わずに安全なログイン機能が実現できます。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New2
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
New3
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New4
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.4
Java&Spring記事人気No4
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策