7.4 FlaskとGraphQLを使用したAPIキーによる認証

FlaskとGraphQLを使用したAPIキーによる認証 #

APIキーは、認証に広く使用されるシンプルなメカニズムです。これは、特に公開APIに対するアクセスを制御するのに便利です。この記事では、FlaskとGraphQLを使用してAPIキー認証を実装する方法を説明します。

FlaskでのAPIキー認証の設定 #

次に、FlaskでのAPIキー認証の設定を行います。以下のコードスニペットは、APIキーを要求するデコレータを定義しています。

from flask import request, abort
from functools import wraps

API_KEY = 'your_api_key'

def require_api_key(view_function):
    @wraps(view_function)
    def decorated_function(*args, **kwargs):
        if request.headers.get('x-api-key') and request.headers.get('x-api-key') == API_KEY:
            return view_function(*args, **kwargs)
        else:
            abort(401)
    return decorated_function

このデコレータは、Flaskのビュー関数に適用することができます。ビュー関数が呼び出されると、デコレータはまずリクエストヘッダーを確認し、APIキーが存在し、その値が定義済みのAPIキーと一致するかどうかを確認します。一致しない場合、デコレータはHTTP 401 Unauthorizedエラーを返します。

GraphQLビューの作成と認証 次に、GraphQLビューを作成し、先程作成したAPIキー認証のデコレータを適用します。

from flask import Flask
from flask_graphql import GraphQLView
from schema import schema  # あなたのGraphQLスキーマをインポートします

app = Flask(__name__)

app.add_url_rule(
    '/graphql', 
    view_func=require_api_key(GraphQLView.as_view('graphql', schema=schema, graphiql=True))
)

この例では、/graphqlエンドポイントはGraphQLビューにマップされ、APIキーが必要となります。リクエストは、先程作成したrequire_api_keyデコレータによって事前にフィルタリングされます。

以上がFlaskとGraphQLでAPIキー認証を設定する方法です。この設定を使用することで、APIエンドポイントへのアクセスを効果的に制御することができます。ただし、APIキーは秘密情報として取り扱い、適切に管理することが重要です。