> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt
# Auth0
`@mastra/auth-auth0` パッケージは、Auth0 を使用した Mastra の認証を提供します。Auth0 が発行した JWT トークンを使用して受信リクエストを検証し、`auth` オプションで Mastra サーバーと統合します。
## 前提条件
この例では Auth0 認証を使用します。次の準備を行ってください。
1. [auth0.com](https://auth0.com/) で Auth0 アカウントを作成する
2. Auth0 Dashboard で Application を設定する
3. Auth0 Dashboard で識別子(audience)を指定して API を設定する
4. Application で許可するコールバック URL、Web オリジン、ログアウト URL を設定する
```env
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_AUDIENCE=your-api-identifier
```
> **注記:** ドメインは Auth0 Dashboard の Applications > Settings で確認できます。audience は Auth0 Dashboard > APIs で設定した API の識別子です。
>
> 詳しい設定手順については、使用するプラットフォーム向けの [Auth0 クイックスタート](https://auth0.com/docs/quickstarts)を参照してください。
## インストール
`MastraAuthAuth0` クラスを使用するには、事前に `@mastra/auth-auth0` パッケージをインストールする必要があります。
**npm**:
```bash
npm install @mastra/auth-auth0@latest
```
**pnpm**:
```bash
pnpm add @mastra/auth-auth0@latest
```
**Yarn**:
```bash
yarn add @mastra/auth-auth0@latest
```
**Bun**:
```bash
bun add @mastra/auth-auth0@latest
```
## 使用例
### 環境変数を使用する基本的な構成
```typescript
import { Mastra } from '@mastra/core'
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
export const mastra = new Mastra({
server: {
auth: new MastraAuthAuth0(),
},
})
```
### カスタム設定
```typescript
import { Mastra } from '@mastra/core'
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
export const mastra = new Mastra({
server: {
auth: new MastraAuthAuth0({
domain: process.env.AUTH0_DOMAIN,
audience: process.env.AUTH0_AUDIENCE,
}),
},
})
```
## 設定
### ユーザー認可
デフォルトでは、`MastraAuthAuth0` は指定した audience に対する有効な Auth0 トークンを持つすべての認証済みユーザーを許可します。トークンの検証では、次の点が確認されます。
1. トークンが Auth0 によって正しく署名されている
2. トークンの有効期限が切れていない
3. トークンの audience が設定した audience と一致する
4. トークンの発行者が Auth0 ドメインと一致する
ユーザー認可をカスタマイズするには、カスタムの `authorizeUser` 関数を指定します。
```typescript
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
const auth0Provider = new MastraAuthAuth0({
authorizeUser: async user => {
// Custom authorization logic
return user.email?.endsWith('@yourcompany.com') || false
},
})
```
利用可能なすべての設定オプションについては、[MastraAuthAuth0](https://mastra.zisheng.pro/ja/reference/auth/auth0) を参照してください。
## クライアント側の設定
Auth0 認証を使用する場合は、Auth0 React SDK を設定してユーザーを認証し、取得したアクセストークンを Mastra へのリクエストに渡す必要があります。
### Auth0 React SDK の設定
まず、アプリケーションに Auth0 React SDK をインストールして設定します。
**npm**:
```bash
npm install @auth0/auth0-react
```
**pnpm**:
```bash
pnpm add @auth0/auth0-react
```
**Yarn**:
```bash
yarn add @auth0/auth0-react
```
**Bun**:
```bash
bun add @auth0/auth0-react
```
```typescript
import React from 'react'
import { Auth0Provider } from '@auth0/auth0-react'
const Auth0ProviderWithHistory = ({ children }) => {
return (
{children}
)
}
export default Auth0ProviderWithHistory
```
### アクセストークンの取得
Auth0 React SDK を使用してユーザーを認証し、アクセストークンを取得します。
```typescript
import { useAuth0 } from '@auth0/auth0-react'
export const useAuth0Token = () => {
const { getAccessTokenSilently } = useAuth0()
const getAccessToken = async () => {
const token = await getAccessTokenSilently()
return token
}
return { getAccessToken }
}
```
> **注記:** その他の認証方法や設定オプションについては、[Auth0 React SDK ドキュメント](https://auth0.com/docs/libraries/auth0-react)を参照してください。
## `MastraClient` の設定
`auth` を有効にすると、`MastraClient` から送信するすべてのリクエストで、`Authorization` ヘッダーに有効な Auth0 アクセストークンを含める必要があります。
```typescript
import { MastraClient } from '@mastra/client-js'
export const createMastraClient = (accessToken: string) => {
return new MastraClient({
baseUrl: 'https://',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
}
```
> **情報:** Authorization ヘッダーでは、アクセストークンに `Bearer` プレフィックスを付ける必要があります。
>
> その他の設定オプションについては、[Mastra Client SDK](https://mastra.zisheng.pro/ja/docs/server/mastra-client) を参照してください。
### 認証済みリクエストの送信
Auth0 アクセストークンを使って `MastraClient` を設定すると、認証済みリクエストを送信できます。
**React**:
```tsx
import React, { useState } from 'react'
import { useAuth0 } from '@auth0/auth0-react'
import { MastraClient } from '@mastra/client-js'
export const MastraApiTest = () => {
const { getAccessTokenSilently } = useAuth0()
const [result, setResult] = useState(null)
const callMastraApi = async () => {
const token = await getAccessTokenSilently()
const mastra = new MastraClient({
baseUrl: 'http://localhost:4111',
headers: {
Authorization: `Bearer ${token}`,
},
})
const weatherAgent = mastra.getAgent('weatherAgent')
const response = await weatherAgent.generate("What's the weather like in New York")
setResult(response.text)
}
return (
{result && (
)}
)
}
```
**cURL**:
```bash
curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer " \
-d '{
"messages": "Weather in London"
}'
```