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キーは秘密情報として取り扱い、適切に管理することが重要です。