メインコンテンツまでスキップ

Auth API reference

auth APIは、Momento auth tokens として知られる Momento サービスのauthトークンを作成し管理します。トークンは、1つ以上のキャッシュやトピックへのアクセスを許可するために、1つまたは複数の権限を持つように設定することができます。

GenerateAuthToken API

権限と有効期限を指定することで新しい Momento authトークンを生成します。

名前説明
scopeTokenScope新しいトークンに付与する権限です。事前に組み立てられたTokenScopeオブジェクトがSDKによって提供されています。
expiresInNumber | ExpiresIn objectトークンが失効するまでの秒数、またはExpiresIn.never()、ExpiresIn.minutes()、ExpiresIn.hours()メソッドを呼び出すことで期間を表すExpiresInオブジェクトです。
Method response object
  • Success
    • authToken: string - 新しいauthトークン
    • refreshToken: string - 有効期限前にトークンを更新するために、RefreshAuthToken APIと共に使用できるリフレッシュトークン
    • expiresAt: Timestamp - トークンが失効するタイムスタンプ
  • Error

具体的な情報についてはレスポンスオブジェクトをご覧ください。

注記

Momento のコントロールプレーン API にアクセスするためのトークンは、Momento consoleを使用してのみ生成できます。

RefreshAuthToken API

既存の有効な Momento authトークンを更新します。新しいauthトークンは、元のauthトークンと同じ権限と有効期間を持ちます。

名前説明
refreshTokenString現在のauthトークンのリフレッシュトークンで、これは GenerateAuthToken の元の呼び出しから取得されます。
Method response object
  • Success
    • authToken: string - 新しいauthトークン
    • refreshToken: string - 有効期限前にトークンを更新するために、RefreshAuthToken API と共に使用できるリフレッシュトークン
    • expiresAt: Timestamp - トークンが失効するタイムスタンプ
  • Error

具体的な情報についてはレスポンスオブジェクトをご覧ください。

TokenScope objects

名前説明
permissionsList <Permission>新しいトークンに付与する権限です。

TokenScope は permission objectsのリストです。リストには、CachePermission型または TopicPermission型の権限が含まれ、最大で十のパーミッションオブジェクトを含むことができます。権限はMomento データプレーンAPI(例えば get、set など)へのアクセスのみを許可します。複数のパーミッションオブジェクトでauthトークンが作成されると、どの一致するパーミッションでもアクセスが許可されます。例えば、次の二つのパーミッションオブジェクトで単一のトークンが作成された場合:

  1. アカウントの全てのキャッシュに対して読み書きアクセスを許可するパーミッションオブジェクト
  2. キャッシュ foo への読み取り専用アクセスを許可するパーミッションオブジェクト

この場合、最初のパーミッションにより、キャッシュfooに対してデータ操作API(例えば setdeleteDictionarySetFieldsなど)の使用を許可するトークンになります。

Permission objects

これらのオブジェクトは、キャッシュまたはトピック情報に関する具体的なロールを定義し、その後 TokenScope に割り当てられます。

CachePermission

キャッシュに対する権限を定義する TokenScope オブジェクトの一部分。

名前説明
roleReadOnly | ReadWriteパーミッションにより付与されるアクセスの種類。
cacheAllCaches | CacheNameCacheName オブジェクトや AllCaches 組み込み値を使用して、パーミッションを選択したキャッシュ名に制限することができます。

ロールについては、CacheRole.ReadOnly を使用すると、CacheSelector で定義されたキャッシュのすべてのデータ読取りAPI(例:getDictionaryGetFieldなど)にアクセスできます。CacheRole.ReadWrite を使用すると、CacheSelector で定義されたキャッシュのすべての読み書きデータプレーンAPIへのアクセスが可能となります。カスタムロールはサポートされていません。

キャッシュについては、値は組み込みの AllCaches またはこのパーミッションが対象とするキャッシュの名前を含む文字列値にすることができます。

TopicPermission

トークンの権限を定義する TokenScope オブジェクトの一部分。

名前説明
roleSubscribeOnly | PublishSubscribeパーミッションにより付与されるアクセスの種類。
cacheAllCaches | CacheNameCacheName オブジェクトを使用してパーミッションを選択したキャッシュ名に制限したり、AllCaches 組み込み値を使用してアカウント内のすべてのキャッシュに制限することができます。
topicAllTopics | TopicNameTopicName オブジェクトを使用してパーミッションを選択したトピック名に制限したり、AllTopics 組み込み値を使用して上記キャッシュ内のすべてのトピックに制限することができます。

ロールについては、TopicRole.PublishSubscribeTopicRole.SubscribeOnly の2つの管理ロールを割り当てることができます。カスタムロールはサポートされていません。SubscribeOnly ロールを使用すると、トピックへのサブスクライブのみが許可されます。一方、PublishSubscribe ロールを使用すると、トピックへのパブリッシュとサブスクライブが許可されます。

キャッシュについては、そのキャッシュの名前空間内のトピックのみがパーミッションによって許可されます。これは組み込みの AllCaches 値に設定するか、特定のキャッシュの名前を指定する文字列に設定できます。

トピックについては、これは組み込みの AllTopics 値に設定でき、これはキャッシュで定義されたキャッシュ内のすべてのトピックへのアクセスを提供します。また、特定のトピック名を持つ文字列にすることもできます。

TopicScope examples

これは、CachePermissions のみで TokenScope を作成する例です。

const CachePermissions = {
permissions: [
{
role: CacheRole.ReadWrite, // Managed role
cache: "MyCache" // grants access to a specific cache
},
{
role: CacheRole.ReadOnly, // Managed role
cache: AllCaches // Built-in value for access to all caches in the account.
},
],
};

これは、TopicPermissions のみで TokenScope を作成する例です。

const TopicsPermissions = {
permissions: [
{
role: TopicRole.PublishSubscribe, // Managed role
cache: 'the-great-wall', // grants access to a specific cache
topic: 'highlights', // grants access to a specific topic
},
{
role: TopicRole.SubscribeOnly, // Built-in role
cache: AllCaches, // This is a built-in value for access to all caches in the account
topic: AllTopics, // This is a built-in value for access to all topic in the listed cache(s).
},
],
};
ヒント

ここで答えられていない質問がある場合は、私たちのDiscordサーバーに参加し、サポートチャンネルで専門家に質問してください

FAQ

キャッシュまたはトピックのパーミッションに対してカスタムロールを作成することは可能ですか?

いいえ。各パーミッションについては、上記に列挙した管理されたロールのみをサポートしています。

これらのトークンは、Momento コントロールプレーン API へのアクセスを制御しますか?

GenerateAuthToken API で生成されたアクセストークンは、Momento のデータプレーンAPIへのアクセスだけを制御します。Momento のコントロールプレーンAPIへのアクセスのためのトークンは、Momento console を使用して生成する必要があります。

ヒント

ここで答えられない質問があれば、私たちのDiscordサーバーに飛び、サポートチャンネルで専門家に質問してください。