S3认证
了解如何使用Supabase Storage S3进行认证
Supabase Storage S3 提供两种认证方式:
- 使用从项目设置生成的S3访问密钥(仅限服务端使用)
- 使用会话令牌(Session Token),可通过用户JWT令牌认证并提供基于行级安全(RLS)的有限访问权限
S3访问密钥
请妥善保管凭证
S3访问密钥拥有对所有存储桶的完全操作权限,且会绕过RLS策略。这些密钥仅限在服务端使用。
要进行S3认证,您需要:
- 生成一对凭证(Access Key ID和Secret Access Key)
- 从项目设置页面复制终端节点(endpoint)和区域(region)
这些信息足以让您通过任何兼容S3的服务连接Supabase Storage。

1234567891011import { S3Client } from '@aws-sdk/client-s3';const client = new S3Client({ forcePathStyle: true, region: 'project_region', endpoint: 'https://project_ref.supabase.co/storage/v1/s3', credentials: { accessKeyId: 'your_access_key_id', secretAccessKey: 'your_secret_access_key', }})
会话令牌
您可以使用用户JWT令牌向Supabase S3进行身份验证,通过RLS为所有S3操作提供受限访问权限。这在您希望初始化服务器端针对特定用户的S3客户端,或直接从客户端使用S3客户端时非常有用。
使用会话令牌执行的所有S3操作都限定在已认证用户的范围内。存储模式上的RLS策略会被遵守。
要使用会话令牌向S3进行身份验证,请使用以下凭据:
- access_key_id:
project_ref
- secret_access_key:
anonKey
- session_token:
有效的jwt令牌
例如,使用aws-sdk
库:
12345678910111213141516import { S3Client } from '@aws-sdk/client-s3'const { data: { session },} = await supabase.auth.getSession()const client = new S3Client({ forcePathStyle: true, region: 'project_region', endpoint: 'https://project_ref.supabase.co/storage/v1/s3', credentials: { accessKeyId: 'project_ref', secretAccessKey: 'anonKey', sessionToken: session.access_token, },})