最近のアクセス:
シンプルな JWT を作成する方法

ここでは、GeneXusJWT モジュールを使用して、一般的な対称アルゴリズムでシンプルな JWT を作成する方法について説明します。
//******HEADER******//
//{
//  "alg": "HS256",
//  "typ": "JWT"
//}
//******PAYLOAD******//
//{
//  "jti": "0696bb20-6223-4a1c-9ebf-e15c74387b9c",
//  "iss": "example.com",
//    "exp" : 1909649720,
//  "company": "Example",
//}

//対称暗号化アルゴリズム (HS256) を使用しているため 16 進数のキーを取得
&symmetricKey = &SymmetricKeyGenerator.DoGenerateKey(SymmetricKeyType.GENERICRANDOM, 256)

//iss クレームを追加 (登録済みクレーム)
//登録済みクレームは必須ではないため、JWTOptions SDT で追加
//ドキュメンテーション: http://wiki.genexus.jp/hwikibypageid.aspx?43983
//JWT のクレームのタイプの詳細 http://wiki.genexus.jp/hwikibypageid.aspx?43981
&JWTOptions.AddRegisteredClaim(RegisteredClaim.iss, "example.com")

//exp クレームを追加 (時刻を検証する登録済みクレーム)//AddCustomTimeValidationClaim は、"yyyy/MM/dd HH:mm:ss" 形式の時刻で使用するメソッド
&JWTOptions.AddCustomTimeValidationClaim(RegisteredClaim.exp, "2030/07/07 10:15:20", "0")
&JWTOptions.AddRegisteredClaim(RegisteredClaim.jti, "0696bb20-6223-4a1c-9ebf-e15c74387b9c")
//シグネチャに使用するキーを追加
&JWTOptions.SetSecret(&symmetricKey)

&PrivateClaims.SetClaim("company","Example")

//DoCreate をトークンの署名およびエンコーディングに使用
//ドキュメンテーション: http://wiki.genexus.jp/hwikibypageid.aspx?43989
&token = &JWTCreator.DoCreate(JWTAlgorithm.HS256, &PrivateClaims, &JWTOptions)

if &JWTCreator.HasError()
    msg("Error on creation: Code: " + &JWTCreator.GetErrorCode() + " Description: " + &JWTCreator.GetErrorDescription(), status)
else
    msg("Correctly generated", status)

    msg("Base 64 token: " + &token, status)

    //JWTCeator オブジェクトには、プレーンテキストでエンコーディングされたトークンからヘッダーおよびペイロードを取得する関数もある

    &header = &JWTCreator.GetHeader(&token)

    msg("Token header: " + &header, status)

    &payload = &JWTCreator.GetPayload(&token)

    msg("Token payload: " + &payload, status)

    &verification = &JWTCreator.DoVerify(&token, JWTAlgorithm.HS256, &PrivateClaims, &JWTOptions)
    //この検証メソッドでは、シグネチャだけでなく、提供されたキーおよびクレームに照らし合わせて、受信したトークンを検証
    //何らかの方法でトークンが変更されていた場合は失敗
    //ほかのタイプのエラーについて、上記の仕様で失敗した場合は、false を返す
    if &JWTCreator.HasError()
        msg("Error on creation: Code: " + &JWTCreator.GetErrorCode() + " Description: " + &JWTCreator.GetErrorDescription(), status)
    else
        msg("Correctly verified.結果: " + &verification.ToString(), status)
    endif

endif


サブページ
Created: 21/04/20 02:19 by Admin Last update: 21/10/28 23:31 by Admin
カテゴリ
Powered by GXwiki 3.0