プラットフォーム SDK の規約
プラットフォーム SDK は、特定のプラットフォームでクライアントを Logto サービスと統合するための標準的な方法を提供し、統合プロセスを加速します。
- プラットフォーム SDK は、プラットフォーム固有の実装で コア をカプセル化します。
- プラットフォーム SDK は、SDK を使いやすくする基本的な型を提供する必要があります。
- プラットフォーム SDK は、
LogtoClientという名前のクラスとしてエクスポートされるべきです。
基本的な型
LogtoConfig
| 名前 | 型 | 必須 | デフォルト値 | 備考 |
|---|---|---|---|---|
| endpoint | string | ✅ | OIDC サービスのエンドポイント。 | |
| appId | string | ✅ | Logto サービスに登録したアプリケーションの ID。 | |
| scopes | string[] | [openid, offline_access, profile] | このフィールドには常に openid、offline_access、profile が含まれます。 | |
| resources | string[] | 使用したい保護されたリソースインジケーター。 | ||
| prompt | string | consent | generateSignInUri で使用されるプロンプト値。 | |
| usingPersistStorage | boolean | true | 資格情報をローカルマシンに保存するかどうかを決定します。 |
*備考
- 必要に応じてこの
LogtoConfigを拡張できます。 usingPersistStorageはクライアント SDK のみで提供されます。例:iOS、Android、SPA。
AccessToken
| 名前 | 型 | 備考 |
|---|---|---|
| token | string | |
| scope | string | |
| expiresAt | number | タイムスタンプ(秒) |
LogtoClient
プロパティ
logtoConfig
型
LogtoConfig
oidcConfig
型
OidcConfigResponse?
accessTokenMap
型
Map<string, AccessToken>
キー
- キーは
scopeとresourceで構成されるべきです。 scopeの値はアルファベット順にソートされ、スペースで結合されるべきです。- キーは
${scope}@${resource}のパターンで構成されるべきです。 scopeまたはresourceが null または空の場合、それらの値は空として扱われるべきです。
例:"offline_access openid read:usr@https://logto.dev/api"、"@https://logto.dev/api"、"openid@"、"@"。
値
expiresAtプロパティを使用してアクセス トークンの有効期限を示すAccessToken。
備考
- Logto V1 ではカスタムスコープをサポートしていないため、
scopeは常に null 値になります。 - アクセストークンキーを構築してアクセストークンを保存する際:
scopeは常に null 値になります。- アクセストークンが JWT でない場合、
resourceを null 値として扱います。 - アクセストークンが JWT の場合、アクセストークンをデコードし、ペイロードの
audクレーム値をアクセストークンキーのresource部分として使用します。
refreshToken
型
string?
備考
refreshToken は以下の状況で設定または更新されます:
- ストレージから
refreshTokenをロードします。 - トークンの取得に成功した際、サーバーがレスポンスで
refreshTokenを返します。 - サインアウト(
nullに設定されます)。
idToken
型
string?
備考
idTokenはバックエンドから来た場合に検証されるべきです。idTokenは以下の状況で設定または更新されます:- ストレージから
idTokenをロードします。 - トークンの取得に成功した際、サーバーがレスポンスで
idTokenを返します。 - サインアウト(
nullに設定されます)。
- ストレージから
メソッド
constructor
パラメーター
| パラメーター | 型 |
|---|---|
| logtoConfig | LogtoConfig |
戻り値の型
LogtoClient
備考
- 必要に応じて追加のパラメーターを追加できます。
- logtoConfig で usePersistStorage が有効になっている場合、プラットフォーム SDK は以下の機能を提供します:
clientIdに基づいて一意のキーで永続データを保存します。- 初期化時にローカルマシンから
refreshTokenとidTokenをロードします。 Core.fetchTokenByAuthorizationCodeとCore.fetchTokenByRefreshTokenでrefreshTokenとidTokenをローカルに保存します。
isAuthenticated
ユーザーが認証 (Authentication) されているかどうかを知るためのものです。
これはゲッターとしても定義できます。
ユーザーは次の場合に認証 (Authentication) されていると見なされます:
- ID トークンを正常に取得した場合。
- ローカルマシンから ID トークンをロードした場合。
パラメーター
なし。
戻り値の型
boolean
SignIn
このメソッドはサインインフローを開始する必要があり、プラットフォーム SDK はサインインリダイレクトプロセスを含む認可に必要なすべてのステップを完了する必要があります。
このメソッドが正常に呼び出された後、ユーザーは認証 (Authentication) されます。
サインインプロセスは Core SDK の関数に依存します:
generateSignInUriverifyAndParseCodeFromCallbackUrifetchTokenByAuthorizationCode
備考:
- generateSignInUri に必要なリソースが含まれているため、fetchTokenByAuthorizationCode 関数にリソースを渡す必要はありません。
パラメーター
| パラメーター | 型 |
|---|---|
| redirectUri | string |
戻り値の型
void
例外
- このサインインプロセス中に発生したエラー。
SignOut
サインアウトプロセスは次のステップに従うべきです:
- ローカルストレージ、クッキー、永続データ、その他のものをクリアします。
Core.revokeを介して取得したリフレッシュトークンを取り消します(リフレッシュトークンが取り消されると、Logto サービスは関連するすべてのトークンを取り消します)。- ステップ 1 がサインインページのセッションをクリアしない限り、ユーザーを Logto のサインアウトエンドポイントにリダイレクトします。
備考:
- ステップ 2 では、
Core.revokeは非同期呼び出しであり、失敗してもサインアウトプロセスをブロックしません。 - ステップ 3 は、Logto のサインアウトエンドポイントを生成するために
Core.generateSignOutUriに依存しています。
パラメーター
| パラメーター | 型 | 必須 | デフォルト値 |
|---|---|---|---|
| postLogoutRedirectUri | string | null |
戻り値の型
void
例外
- このサインアウトプロセス中に発生したエラー。
getAccessToken
getAccessToken は accessTokenMap から resource と scope によって AccessToken を取得し、その AccessToken の token 値を返します。
Logto V1 ではカスタムスコープをサポートしていないため、accessTokenMap のキーを構築する際に scope を null に設定します。
備考
- 対応する
AccessTokenが見つからない場合、必要なトークンを取得するためにCore.fetchTokenByRefreshTokenアクションを実行します。 accessTokenが期限切れでない場合、その内部のtoken値を返します。accessTokenが期限切れの場合、新しいaccessTokenを取得するためにCore.fetchTokenByRefreshTokenアクションを実行し、ローカルのaccessTokenMapを更新し、新しいtoken値を返します。Core.fetchTokenByRefreshTokenが失敗した場合、発生した例外をユーザーに通知します。- リフレッシュトークンが見つからない場合、ユーザーに未認可の例外を通知します。
- サインイン後に
refreshTokenを取得することでのみ、Core.fetchTokenByRefreshTokenアクションを実行できます。
パラメーター
| パラメーター | 型 | 必須 | デフォルト値 |
|---|---|---|---|
| resource | string | null |
戻り値の型
string
例外
- ユーザーが認証 (Authentication) されていません。
- 入力された
resourceがlogtoConfigに設定されていません。 Core.fetchTokenByRefreshTokenの前にリフレッシュトークンが見つかりません。Core.fetchTokenByRefreshTokenが失敗しました。
getIdTokenClaims
getIdTokenClaims は idToken プロパティのクレームを持つオブジェクトを返します。
パラメーター
なし。
戻り値の型
IdTokenClaims
例外
- ユーザーが認証 (Authentication) されていません。