メインコンテンツへ移動

Supabase

@mastra/auth-supabase パッケージは、Supabase Auth を使用した Mastra の認証を提供します。Supabase の認証システムを使って受信リクエストを検証し、auth オプションで Mastra サーバーと統合します。

前提条件
前提条件への直接リンク

この例では Supabase Auth を使用します。Supabase の認証情報を .env ファイルに追加し、Supabase プロジェクトが適切に設定されていることを確認してください。

.env
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
注記

適切なデータアクセス制御を確保するため、Supabase の Row Level Security(RLS)設定を確認してください。

インストール
インストールへの直接リンク

MastraAuthSupabase クラスを使用するには、事前に @mastra/auth-supabase パッケージをインストールする必要があります。

npm install @mastra/auth-supabase@latest

使用例
使用例への直接リンク

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthSupabase } from '@mastra/auth-supabase'

export const mastra = new Mastra({
server: {
auth: new MastraAuthSupabase({
url: process.env.SUPABASE_URL,
anonKey: process.env.SUPABASE_ANON_KEY,
}),
},
})
情報

デフォルトの authorizeUser メソッドは、public スキーマの users テーブルにある isAdmin 列を確認します。ユーザー認可をカスタマイズするには、Provider の構築時にカスタムの authorizeUser 関数を指定します。

利用可能なすべての設定オプションについては、MastraAuthSupabase を参照してください。

クライアント側の設定
クライアント側の設定への直接リンク

Supabase 認証を使用する場合は、クライアント側で Supabase からアクセストークンを取得し、Mastra へのリクエストに渡す必要があります。

アクセストークンの取得
アクセストークンの取得への直接リンク

Supabase クライアントを使ってユーザーを認証し、アクセストークンを取得します。

lib/auth.ts
import { createClient } from '@supabase/supabase-js'

const supabase = createClient('<supabase-url>', '<supabase-key>')

const authTokenResponse = await supabase.auth.signInWithPassword({
email: "<user's email>",
password: "<user's password>",
})

const accessToken = authTokenResponse.data?.session?.access_token
注記

OAuth やマジックリンクなど、その他の認証方法については、Supabase ドキュメントを参照してください。

MastraClient の設定
configuring-mastraclientへの直接リンク

auth を有効にすると、MastraClient から送信するすべてのリクエストで、Authorization ヘッダーに有効な Supabase アクセストークンを含める必要があります。

lib/mastra/mastra-client.ts
import { MastraClient } from '@mastra/client-js'

export const mastraClient = new MastraClient({
baseUrl: 'https://<mastra-api-url>',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
情報

Authorization ヘッダーでは、アクセストークンに Bearer プレフィックスを付ける必要があります。

その他の設定オプションについては、Mastra Client SDK を参照してください。

認証済みリクエストの送信
認証済みリクエストの送信への直接リンク

Supabase アクセストークンを使って MastraClient を設定すると、認証済みリクエストを送信できます。

src/components/test-agent.tsx
import { mastraClient } from '../../lib/mastra-client'

export const TestAgent = () => {
async function handleClick() {
const agent = mastraClient.getAgent('weatherAgent')

const response = await agent.generate("What's the weather like in New York")

console.log(response)
}

return <button onClick={handleClick}>Test Agent</button>
}