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

コア SDK の規約

基本的な規約

  • コアにはプラットフォームに依存しない関数のみを含めるべきです。
  • コアは {$language} と命名され、リポジトリのルートディレクトリに配置されるべきです。例:logto/js/jslogto/kotlin/kotlin
  • コアパッケージは Logto スコープ内で {$language} と命名されるべきです。例:@logto/jsio.logto.sdk:kotlin

基本的な要件

どのコア SDK も以下を含むべきです:

  • ユーティリティ関数
  • コア関数

OidcConfigResponse

アイデンティティプロバイダーの設定で、/oidc/.well-known/openid-configuration API を介して取得できます。

プロパティ

名前
authorizationEndpointstring
tokenEndpointstring
endSessionEndpointstring
revocationEndpointstring
jwksUristring
issuerstring

CodeTokenResponse

/oidc/token(認可コードによる)のレスポンスデータ。

プロパティ

名前必須
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber

RefreshTokenResponse

リフレッシュトークンによるトークンのリフレッシュ時に /oidc/token(リフレッシュトークンによる)のレスポンスデータ。

プロパティ

名前必須
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber

IdTokenClaims

ID トークンに含まれるクレーム。

プロパティ

名前必須
substring
audstring
expnumber
iatnumber
issstring
atHashstring
usernamestring
namestring
avatarstring

ユーティリティ関数

generateCodeVerifier

コードベリファイアを生成します。
コードベリファイアの長さは 64 にハードコードされています。
返される値は URL セーフな base64 形式の文字列に暗号化されなければなりません。

参考

パラメータ

なし。

戻り値の型

string

generateCodeChallenge

コードベリファイアに基づいてコードチャレンジを生成します。
このメソッドはコードベリファイアを暗号化し、結果を URL セーフな Base64 形式で返します。
Logto V1 では暗号化アルゴリズムを SHA-256 にハードコードしています。

参考

パラメータ

名前備考
codeVerifierstringgenerateCodeVerifier によって生成

戻り値の型

string

generateState

"State" は CSRF 攻撃を防ぐために使用されます。
"State" の長さは 64 にハードコードされています。
返される文字列は URL セーフな base64 形式の文字列に暗号化されなければなりません。

参考

パラメータ

なし。

戻り値の型

string

decodeIdToken

秘密の検証なしで ID トークンをデコードします。
ペイロードセクションにあるすべてのトークンクレームを含む IdTokenClaims を返します。

パラメータ

名前
tokenstring

戻り値の型

IdTokenClaims

例外

  • token が有効な JWT でない場合。

verifyIdToken

ID トークンが合法であるかを検証します。

署名キーの検証

OIDC は JSON Web Key Set をサポートしています。
この関数は、3rd パーティライブラリ (jose) からの JsonWebKeySet オブジェクトを受け入れて検証を行います。

// JsonWebKeySet の例
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "xxxx",
"e": "xxxx",
"n": "xxxx"
}
]
}

クレームの検証

  • ID トークン内の iss がこのトークンの発行者と一致することを確認します。
  • aud (オーディエンス) クレームがクライアント ID と等しいことを確認します。
  • 現在の時間が有効期限の前であることを確認します。
  • 発行時刻 (iat) が現在の時間から +/- 1 分以内であることを確認します。

参考

パラメータ

名前
idTokenstring
clientIdstring
issuerstring
jwksJsonWebKeySet

戻り値の型

void

例外

  • 署名キーの検証に失敗した場合
  • クレームの検証に失敗した場合

verifyAndParseCodeFromCallbackUri

サインイン callbackUri が合法であることを検証し、callbackUri から抽出された code を返します。

コールバック URI の検証

  • callbackUriredirectUri で始まることを確認します。
  • callbackUrierror がないことを確認します(リダイレクト URI の エラーレスポンス を参照)。
  • callbackUristate が含まれており、それが generateSignInUri で指定した state 値と等しいことを確認します。
  • callbackUri/oidc/token(リフレッシュトークンによる)をリクエストする際に使用する code パラメータ値が含まれていることを確認します。

パラメータ

名前
callbackUristring
redirectUristring
statestring

戻り値の型

string

例外

  • 検証に失敗した場合

コア関数

fetchOidcConfig

/oidc/.well-known/openid-configuration にリクエストして OidcConfigResponse を返します。

パラメータ

名前備考
endpointstringOIDC サービスエンドポイント

戻り値の型

OidcConfigResponse

例外

  • フェッチに失敗した場合

generateSignInUri

パラメータ

名前必須備考
authorizationEndpointstring
clientIdstring
redirectUristring
codeChallengestring
statestring
scopesstring[]実装は言語仕様に応じて異なる場合があります。
resourcesstring[]実装は言語仕様に応じて異なる場合があります。
promptstringデフォルト:consent

URL は authorizationEndpoint に基づいて生成され、次のクエリパラメータを含みます:

サインイン URL クエリパラメータ

クエリキー必須備考
client_id
redirect_uri
code_challenge
code_challenge_methodS256 にハードコードされています。
state
scopescope は常に openid と offline_access を含み、入力された scope が null または空の scope 値を提供しても含まれます。
resourceURI に resource を複数回追加できます。バックエンドはそれらをリストとして変換します。例:resource=a&resource=b
response_typecode にハードコードされています。
prompt

戻り値の型

string

generateSignOutUri

パラメータ

名前必須
endSessionEndpointstring
idTokenstring
postLogoutRedirectUristring

生成される URL は endSessionEndpoint に基づいており、次のクエリパラメータを含みます:

サインアウト URL クエリパラメータ

クエリキー必須備考
id_token_hint入力された idToken パラメータ
post_logout_redirect_uri入力された postLogoutRedirectUri パラメータ

戻り値の型

string

fetchTokenByAuthorizationCode

認可コードによって /oidc/token にリクエストしてトークン (CodeTokenResponse) を取得します。

パラメータ

名前必須
tokenEndpointstring
codestring
codeVerifierstring
clientIdstring
redirectUristring
resourcestring

HTTP リクエスト

  • エンドポイント:/oidc/token
  • メソッド:POST
  • Content-Type:application/x-www-form-urlencoded
  • ペイロード:
クエリキー必須
grant_typestring: 'authorization_code'
codestring
code_verifierstring
client_idstring
redirect_uristring
resourcestring

戻り値の型

CodeTokenResponse

例外

  • フェッチに失敗した場合

fetchTokenByRefreshToken

リフレッシュトークンによって /oidc/token にリクエストしてトークン (RefreshTokenTokenResponse) を取得します。

パラメータ

名前必須
tokenEndpointstring
clientIdstring
refreshTokenstring
resourcestring
scopesstring[]

HTTP リクエスト

  • エンドポイント:/oidc/token
  • メソッド:POST
  • Content-Type:application/x-www-form-urlencoded
  • ペイロード:
クエリキー必須備考
grant_typestring: 'refresh_token'
refresh_tokenstring
client_idstring
resourcestring
scopestringscopes の値をスペースで結合してこの scope 文字列を構築します。

戻り値の型

RefreshTokenTokenResponse

例外

  • フェッチに失敗した場合

revoke

/oidc/token/revocation API にリクエストして、以前に取得したリフレッシュまたはアクセス トークンが不要になったことを認可サーバーに通知します。

パラメータ

名前備考
revocationEndpointstring
clientIdstring
tokenstring取り消すトークン

HTTP リクエスト

  • エンドポイント:/oidc/token/revocation
  • メソッド:POST
  • Content-Type:application/x-www-form-urlencoded
  • ペイロード:
クエリキー
client_idstring
tokenstring

戻り値の型

void

例外

  • 取り消しに失敗した場合