サインイン済みユーザーのデータアクセス
authenticated 認可戦略は、IAM、Cognito、または OpenID Connect を通じて認証されたサインイン済みユーザーのみにレコードアクセスを制限し、認可ルールをすべてのユーザーに適用します。これは、認証されたすべてのユーザーのデータをプライベートにする簡単な方法を提供します。
サインイン済みユーザーの認可ルールを追加する
authenticated 認可戦略を使用して、レコードのアクセスをすべてのサインイン済みユーザーに制限できます。
以下の例では、Cognito ユーザープールからの有効な JWT トークンを持つ誰もがすべての Todo にアクセスできます。
const schema = a.schema({ Todo: a .model({ content: a.string(), }) .authorization(allow => [allow.authenticated()]),});アプリケーションで、client.models.<model-name> を使用して userPool 認証モードで CRUD 操作を実行できます。
import { generateClient } from 'aws-amplify/data';import type { Schema } from '../amplify/data/resource'; // Path to your backend resource definition
const client = generateClient<Schema>();
const { errors, data: newTodo } = await client.models.Todo.create( { content: 'My new todo', }, { authMode: 'userPool', });サインイン済みユーザー認証に ID プールを使用する
認可プロバイダーをオーバーライドすることもできます。以下の例では、identityPool がプロバイダーとして指定されており、API キーの代わりに Cognito ID プールから「未認証ロール」を使用してパブリックアクセスを許可できます。amplify/auth/resource.ts で定義された Auth リソースは、Cognito ID プールの「未認証ロール」に対してスコープダウンされた IAM ポリシーを自動的に生成します。
const schema = a.schema({ Todo: a .model({ content: a.string(), }) .authorization(allow => [allow.authenticated('identityPool')]),});アプリケーションで、client.models.<model-name> を使用して iam 認証モードで CRUD 操作を実行できます。
import { generateClient } from 'aws-amplify/data';import type { Schema } from '../amplify/data/resource'; // Path to your backend resource definition
const client = generateClient<Schema>();
const { errors, data: newTodo } = await client.models.Todo.create( { content: 'My new todo', }, { authMode: 'identityPool', });さらに、authenticated 認可で OpenID Connect を使用することもできます。認可プロバイダーとしての OpenID Connectを参照してください。