Supabase
@mastra/auth-supabase パッケージは、Supabase Auth を使用した Mastra の認証を提供します。Supabase の認証システムを使って受信リクエストを検証し、auth オプションで Mastra サーバーと統合します。
前提条件前提条件への直接リンク
この例では Supabase Auth を使用します。Supabase の認証情報を .env ファイルに追加し、Supabase プロジェクトが適切に設定されていることを確認してください。
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
適切なデータアクセス制御を確保するため、Supabase の Row Level Security(RLS)設定を確認してください。
インストールインストールへの直接リンク
MastraAuthSupabase クラスを使用するには、事前に @mastra/auth-supabase パッケージをインストールする必要があります。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/auth-supabase@latest
pnpm add @mastra/auth-supabase@latest
yarn add @mastra/auth-supabase@latest
bun add @mastra/auth-supabase@latest
使用例使用例への直接リンク
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 クライアントを使ってユーザーを認証し、アクセストークンを取得します。
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 アクセストークンを含める必要があります。
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 を設定すると、認証済みリクエストを送信できます。
- React
- cURL
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>
}
curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-supabase-access-token>" \
-d '{
"messages": "Weather in London"
}'