liquid上からlambdaやazureFunctionなどの外部APIを実行する場合
APIトークンを使用することになりますが、APIトークンを環境変数など
どこかに隠しておいておくこと可能でしょうか?
Topic summary
Shopifyテーマ開発において、Liquid上からLambdaやAzure Functionなどの外部APIを実行する際のAPIトークン管理方法についての質問。
主な回答内容:
- APIトークンを環境変数などに隠すことは不可能
- 理由: Liquidから実行 = フロントエンド(ユーザーのブラウザ)から実行されるため、必ずJavaScriptなどにトークンが露出してしまう
推奨される対応策:
- 外部API(LambdaなどのHTTPエンドポイント)を公開し、固定トークンを持つ場合のみ許可する仕組みを検討
- APIを経由して実行する場合、APIトークンの使用は必要になる
現状: セキュリティ上の制約により、フロントエンドからの直接的なAPIトークン管理は困難という結論。代替アーキテクチャの検討が必要な状況。
EijiSaitoさん、はじめまして。
Tsunの小笠原と申します。
APIトークンを環境変数などどこかに隠しておいておくこと可能でしょうか?
APIトークンを環境変数などに隠すことはできないです。
なぜならLiquidから実行 = フロントエンド (各ユーザーのブラウザ) から実行されるということは必ずJSなどにトークンが露出するためです。
lambdaやazureFunctionなどの外部APIを実行する場合APIトークンを使用することになりますが、
この部分がよく理解できていないので、補足が難しいのですが、Lambdaなどの外部APIをhttp経由で実行する際にAPIトークンは必要ないと思います。
APIのエンドポイントを公開しているが、固定のトークンを持つ場合のみ許可するようにしているとかでしょうか?(OAuth 2.0などを使っていない)
もう少し詳しくご説明いただくことは可能でしょうか?