プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Hasura
  • 【Hasura】認証方式(「Hasura admin secret」、「JWT認証」など)…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Hasura】認証方式(「Hasura admin secret」、「JWT認証」など)について

10.09

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

エンドポイントのプロテクションのためにさまざまな認証方式があります。Hasuraは認証をHasura外で行う必要があります。

色々な方式がありますが、いずれの方式もSession Variables(セッション変数)という変数(X-Hasura-Role)をHasuraに渡すことでユーザーの識別を実施します。

webhook認証

すでに古くから使っている認証用コードなどを持っている場合にそれを組み込まなきゃとなった場合はこちらを使います。

Hasura admin secretを使った認証

Hasuraでデフォルトで用意されているシークレットキーを使った方法です。こちらは無料でできるので楽です。

手順

  1. プロジェクト
  2. 設定
  3. Env Vars
  4. New Env Vars
  5. 「HASURA_GRAPHQL_ADMIN_SECRET」を選択して、Valueに任意のパスワードを入力して、Add。
  6. APIの画面の方に「x-hasura-admin-secret」というリクエストヘッダーが追加されています。

以降は、「x-hasura-admin-secret」というヘッダーをつけないとHasuraのエンドポイントにアクセスができなくなります。

JWT(JSON web token)認証

Hasuraのエンドポイントに対して適切なJWTトークンを付与してリクエストしないとHasuraがレスポンスを返さないようにする手法です。

一から実装する場合は基本こちらを使います。サードパーティ(例えば、Firebase、Auth0など)とかのJWTトークンを他に発行してくれるようなサービスを使っている場合はこちらを選びます。基本的に、ユーザーやパスワードの情報などはいくら暗号化したからといって自分のサーバーに持つことは設計的にアンチパターンと言われているので昨今の開発ではサードパーティの認証機構を使うのが主流になっています。

懸念点

本番環境とかではNext.jsはVercelにデプロイすることが多いのですが、その際にHasuraのエンドポイントに通そうとするとFirebaseのCloud functionsのcustomClaimsという機能が必要で、有料プランなどの契約が別途必要になってしまいます。

流れ

  1. クライアントが認証サーバー(Auth0、Firebase)にJWTトークンを受け取り、それを含めてHasuraに対してJWTを含めたリクエストを送信する。
  2. Hasuraはsercretを用いてユーザーから受け取ったJWTをパースします。パースするとアクセスコントール情報が記載があるJSONになります。(Hasuraの「HASURA_GRAPHQL_JWT_SECRET」で設定した内容と、ユーザーから受け取ったJWTの内容が合致しているかチェックして一致していない場合はエラーになります。)
  3. JWT内のclaimに記述された「X-Hasura-Allowed-Role」の中からユーザーに割り当てるロールを選択して、Authenticationを実施します。

JWTトークンの作成

HasuraのJWT configにアクセスします。

https://hasura.io/jwt-config/

Select Provider

firebaseを選択します。Auth0を使っている場合はAuth0も選択できます。

Enter Firebase Project ID

firebaseで作成したプロジェクトIDを入力します。

GENERATE CONFIG

JWTトークンを生成できます。

Hasura側の設定

Env.varsで「HASURA_GRAPHQL_JWT_SECRET」を選択して、先ほど生成したJWTトークンを貼り付けます。

Firebaseとの連携

以下は参考までにFirebaseと連携する場合の流れです。

【Firebase】「Cloud Function」と「Hasura」の連携

スポンサーリンク
  • 2022 10.09
  • miyabisan2
  • コメントを書く
  • Hasura
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2022 10.09

    【Firebase】「Cloud Function」と「Hasura」の連携

  2. 2022 10.09

    【Hasura】テーブルの設定(「リレーションシップ」、「Permissions」)について

  3. 2022 10.16

    【Hasura】基本、Railsとの連携

  4. 2022 10.16

    【Hasura】「Migrations」&「Metadata」について

  5. 2022 10.08

    【Next.js】「Hasura」と「Apollo Client」の連携

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Firebase】「Cloud Function」と…

【GraphQL】「Apollo Server」につい…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー