---
date: 2024-04-07 23:00:00
description: 前回の記事ではAWS JWT Verifyライブラリを用いましたが、今回はClaris ID Tokenの有効期限を知ることが目的です。そのため、ライブラリを使わずにJWTのペイロードを直接確認する方法を紹介します。
title: Claris ID Tokenの有効期限をJWTのペイロードで確認する方法
updatedDate: 2025-12-17 09:00:00
---

以前の投稿で、Claris ID Tokenが有効かどうかを検証する方法について記事にしました。

[Claris ID Tokenが有効か無効か確認する方法 | 株式会社フルーデンス](https://www.frudens.com/blog/2024/04/05/claris-id-token-validation-method/)

前回の記事では [AWS JWT Verify](https://github.com/awslabs/aws-jwt-verify) ライブラリを使用しましたが、今回の要件はトークンの署名検証ではなく、単純に**Claris ID Tokenの有効期限を知ること**です。

そのため、外部ライブラリには依存せず、FileMaker単体でJWTのペイロードを確認する方法を採用しました。

## JWTについて

JWT（JSON Web Token）の仕様や詳細については、`jwt.io` を参照してください。


> **What is JSON Web Token?**
>
>       JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object.
>
>       This information can be verified and trusted because it is digitally signed.
>
>       JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.


> **JSONウェブトークンとは何ですか？**
>
>       JSON Web Token (JWT) は、関係者間で情報を JSON オブジェクトとして安全に送信するためのコンパクトで自己完結型の方法を定義するオープン スタンダード (RFC 7519) です。
>
>       この情報はデジタル署名されているため、検証および信頼できます。
>
>       JWT は、シークレット (HMAC アルゴリズムを使用)、または RSA または ECDSA を使用した公開/秘密キーのペアを使用して署名できます。


    [JSON Web Token Introduction - jwt.io](https://jwt.io/introduction)


## 有効期限をFileMakerで確認する方法

Claris ID Tokenの有効期限をFileMakerで算出するためのスクリプトは以下の通りです。

![Claris ID Tokenの有効期限をJWTのペイロードで確認するスクリプト](filemaker-script-get-claris-id-token-expiration.png)

*FileMaker スクリプトワークスペースでの実装イメージ*


```
# Claris ID Tokenの有効期限をJWTのペイロードで確認する方法 in file blank (6t2s.frudens.jp)

#
テキストを挿入 [ 選択 ; ターゲット: $clarisIdToken ; 「eyJraWQ...」 ]
#
# --- Base64Url を Base64 に変換（記号の置換）
変数を設定 [ $clarisIdTokenSafe ; 値: Substitute (   $clarisIdToken ;   [ "-" ; "+" ] ;   [ "_" ; "/" ] ) ]
#
# --- ペイロード部分（2番目の要素）を取得
変数を設定 [ $payloadBase64 ; 値: GetValue ( Substitute ( $clarisIdTokenSafe ; "." ; ¶ ) ; 2 ) ]
#
# --- パディング（=）の補完処理
変数を設定 [ $remainder ; 値: Mod ( Length ( $payloadBase64 ) ; 4 ) ]
変数を設定 [ $padding ; 値: If ( $remainder > 0 ; Left ( "====" ; 4 - $remainder ) ; "" ) ]
#
# --- デコード
変数を設定 [ $payload ; 値: Base64Decode ( $payloadBase64 & $padding ) ]
// # {
    "aud" : "111xvl1mv1es2eep1qe11cautn",
    "auth_time" : 1712298737,
    "cognito:username" : "a1b1a51f-a91a-111a-1d11-1a111b1ac1fc",
    "custom:country" : "JP",
    "custom:mag.userId" : "1234",
    "custom:managedby" : "1",
    "custom:privacy" : "1",
    "email" : "hoge@domein.hogehoge",
    "email_verified" : true,
    "event_id" : "1234b2fe-1234-4fd2-be88-e6da8ebffc8a",
    "exp" : 1712302337,
    "family_name" : "Komaki",
    "given_name" : "Teruhiro",
    "iat" : 1712298737,
    "iss" : "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_NqkuZcXQY",
    "jti" : "1cb111cb-111e-11e1-11e1-e1c1f1f111ce",
    "locale" : "ja-JP",
    "origin_jti" : "2fc2a2aa-ff2b-2222-bcef-2ae22ff2222f",
    "phone_number_verified" : false,
    "sub" : "a1b1a51f-a91a-111a-1d11-1a111b1ac1fc",
    "token_use" : "id"
}
#
変数を設定 [ $unixTime_有効期限日時 ; 値: JSONGetElement ( $payload ; "exp" ) ]
// # 1712302337
#
# --- UnixTimeをタイムスタンプに変換（+9時間でJSTへ変換）
変数を設定 [ $有効期限日時 ; 値: GetAsTimestamp ( GetAsNumber ( Timestamp ( Date ( 1 ; 1 ; 1970 ) ; Time ( 0 ; 0 ; 0 ) ) ) + ( $unixTime_有効期限日時 ) + ( 60 * 60 * 9 ) ) ]
// # 2024/04/05 16:32:17
#
// # Get ( タイムスタンプ ) or Get ( ホストのタイムスタンプ )
# NOTE: 比較対象の有効期限日時をJSTに変換しているため、クライアントもJSTであることを前提とします。
変数を設定 [ $現在日時 ; 値: Get ( タイムスタンプ ) ]
#
If [ $有効期限日時 JWTのペイロードから有効期限（exp）を取得するFileMakerスクリプト

## サンプルファイルについて

本記事で紹介したサンプルファイルをご希望の方は、無料相談フォームよりお気軽にお問い合わせください。