From d4ceac77a987902448f1212c904df44328062e4d Mon Sep 17 00:00:00 2001 From: Alejandro Rosales Date: Mon, 2 Mar 2026 14:13:28 -0600 Subject: [PATCH] feat: add logging for JWT refresh and session management in Supabase security notebook --- notebooks/supabase-security.ipynb | 131 ++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/notebooks/supabase-security.ipynb b/notebooks/supabase-security.ipynb index 960d900..5476b92 100644 --- a/notebooks/supabase-security.ipynb +++ b/notebooks/supabase-security.ipynb @@ -18,6 +18,14 @@ "});" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "be47eac0", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -91,6 +99,128 @@ "execution_count": 3, "metadata": {}, "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TOKEN_REFRESHED {\n", + " aal: \"aal1\",\n", + " amr: [ { method: \"password\", timestamp: 1772473271 } ],\n", + " app_metadata: { provider: \"email\", providers: [ \"email\" ] },\n", + " aud: \"authenticated\",\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " exp: 1772480381,\n", + " feature_x: true,\n", + " iat: 1772476781,\n", + " is_anonymous: false,\n", + " iss: \"http://127.0.0.1:54321/auth/v1\",\n", + " phone: \"\",\n", + " role: \"authenticated\",\n", + " session_id: \"f76f4ddf-e719-464b-b0ae-80a6b120efa4\",\n", + " sub: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " tenant_id: \"local-dev-tenant\",\n", + " user_metadata: { email_verified: true }\n", + "}\n", + "{\n", + " access_token: \"eyJhbGciOiJFUzI1NiIsImtpZCI6ImI4MTI2OWYxLTIxZDgtNGYyZS1iNzE5LWMyMjQwYTg0MGQ5MCIsInR5cCI6IkpXVCJ9.eyJhYWwiOiJhYWwxIiwiYW1yIjpbeyJtZXRob2QiOiJwYXNzd29yZCIsInRpbWVzdGFtcCI6MTc3MjQ3MzI3MX1dLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwiYXVkIjoiYXV0aGVudGljYXRlZCIsImVtYWlsIjoiZ3VpbGxlcm1vLmFycmlldGFAbGFzYWxsZS5teCIsImV4cCI6MTc3MjQ4MDM4MSwiZmVhdHVyZV94Ijp0cnVlLCJpYXQiOjE3NzI0NzY3ODEsImlzX2Fub255bW91cyI6ZmFsc2UsImlzcyI6Imh0dHA6Ly8xMjcuMC4wLjE6NTQzMjEvYXV0aC92MSIsInBob25lIjoiIiwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJzZXNzaW9uX2lkIjoiZjc2ZjRkZGYtZTcxOS00NjRiLWIwYWUtODBhNmIxMjBlZmE0Iiwic3ViIjoiOTVkMWYzODEtNzAyMy00ZjMzLWJjNTQtMDhjY2QwOGFiZjQxIiwidGVuYW50X2lkIjoibG9jYWwtZGV2LXRlbmFudCIsInVzZXJfbWV0YWRhdGEiOnsiZW1haWxfdmVyaWZpZWQiOnRydWV9fQ.28CQUM9O7Cn1DlbMsLLaN-19uDmEGC_NvLRL6S3-Z3ym3T5gQ5OXiJ6_NlyblMJfJOQdMo88uGRIAZt9PwkE6A\",\n", + " token_type: \"bearer\",\n", + " expires_in: 3600,\n", + " expires_at: 1772480381,\n", + " refresh_token: \"363vd67k2taw\",\n", + " user: {\n", + " id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " aud: \"authenticated\",\n", + " role: \"authenticated\",\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " email_confirmed_at: \"2026-01-13T14:54:39.096101Z\",\n", + " phone: \"\",\n", + " confirmed_at: \"2026-01-13T14:54:39.096101Z\",\n", + " last_sign_in_at: \"2026-03-02T17:41:10.986584Z\",\n", + " app_metadata: { provider: \"email\", providers: [ \"email\" ] },\n", + " user_metadata: { email_verified: true },\n", + " identities: [\n", + " {\n", + " identity_id: \"b2f3094d-a29b-42b5-be69-3397282ffcd7\",\n", + " id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " user_id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " identity_data: {\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " email_verified: false,\n", + " phone_verified: false,\n", + " sub: \"95d1f381-7023-4f33-bc54-08ccd08abf41\"\n", + " },\n", + " provider: \"email\",\n", + " last_sign_in_at: \"2026-01-13T14:54:39.085382Z\",\n", + " created_at: \"2026-01-13T14:54:39.08544Z\",\n", + " updated_at: \"2026-01-13T14:54:39.08544Z\",\n", + " email: \"guillermo.arrieta@lasalle.mx\"\n", + " }\n", + " ],\n", + " created_at: \"2026-01-13T14:54:39.081453Z\",\n", + " updated_at: \"2026-03-02T18:39:41.80176Z\",\n", + " is_anonymous: false\n", + " }\n", + "}\n", + "TOKEN_REFRESHED {\n", + " aal: \"aal1\",\n", + " amr: [ { method: \"password\", timestamp: 1772473271 } ],\n", + " app_metadata: { provider: \"email\", providers: [ \"email\" ] },\n", + " aud: \"authenticated\",\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " exp: 1772483893,\n", + " feature_x: true,\n", + " iat: 1772480293,\n", + " is_anonymous: false,\n", + " iss: \"http://127.0.0.1:54321/auth/v1\",\n", + " phone: \"\",\n", + " role: \"authenticated\",\n", + " session_id: \"f76f4ddf-e719-464b-b0ae-80a6b120efa4\",\n", + " sub: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " tenant_id: \"local-dev-tenant\",\n", + " user_metadata: { email_verified: true }\n", + "}\n", + "{\n", + " access_token: \"eyJhbGciOiJFUzI1NiIsImtpZCI6ImI4MTI2OWYxLTIxZDgtNGYyZS1iNzE5LWMyMjQwYTg0MGQ5MCIsInR5cCI6IkpXVCJ9.eyJhYWwiOiJhYWwxIiwiYW1yIjpbeyJtZXRob2QiOiJwYXNzd29yZCIsInRpbWVzdGFtcCI6MTc3MjQ3MzI3MX1dLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwiYXVkIjoiYXV0aGVudGljYXRlZCIsImVtYWlsIjoiZ3VpbGxlcm1vLmFycmlldGFAbGFzYWxsZS5teCIsImV4cCI6MTc3MjQ4Mzg5MywiZmVhdHVyZV94Ijp0cnVlLCJpYXQiOjE3NzI0ODAyOTMsImlzX2Fub255bW91cyI6ZmFsc2UsImlzcyI6Imh0dHA6Ly8xMjcuMC4wLjE6NTQzMjEvYXV0aC92MSIsInBob25lIjoiIiwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJzZXNzaW9uX2lkIjoiZjc2ZjRkZGYtZTcxOS00NjRiLWIwYWUtODBhNmIxMjBlZmE0Iiwic3ViIjoiOTVkMWYzODEtNzAyMy00ZjMzLWJjNTQtMDhjY2QwOGFiZjQxIiwidGVuYW50X2lkIjoibG9jYWwtZGV2LXRlbmFudCIsInVzZXJfbWV0YWRhdGEiOnsiZW1haWxfdmVyaWZpZWQiOnRydWV9fQ.TUYrfJrHy3fwPwI4VD24oYunaNAehDMnJleKn_JQg5LHwBIqe422qlGkNXvhu7juknS-kcEjJ1MaXBAP4Cu_WQ\",\n", + " token_type: \"bearer\",\n", + " expires_in: 3600,\n", + " expires_at: 1772483893,\n", + " refresh_token: \"s35spp4fy6oe\",\n", + " user: {\n", + " id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " aud: \"authenticated\",\n", + " role: \"authenticated\",\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " email_confirmed_at: \"2026-01-13T14:54:39.096101Z\",\n", + " phone: \"\",\n", + " confirmed_at: \"2026-01-13T14:54:39.096101Z\",\n", + " last_sign_in_at: \"2026-03-02T17:41:10.986584Z\",\n", + " app_metadata: { provider: \"email\", providers: [ \"email\" ] },\n", + " user_metadata: { email_verified: true },\n", + " identities: [\n", + " {\n", + " identity_id: \"b2f3094d-a29b-42b5-be69-3397282ffcd7\",\n", + " id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " user_id: \"95d1f381-7023-4f33-bc54-08ccd08abf41\",\n", + " identity_data: {\n", + " email: \"guillermo.arrieta@lasalle.mx\",\n", + " email_verified: false,\n", + " phone_verified: false,\n", + " sub: \"95d1f381-7023-4f33-bc54-08ccd08abf41\"\n", + " },\n", + " provider: \"email\",\n", + " last_sign_in_at: \"2026-01-13T14:54:39.085382Z\",\n", + " created_at: \"2026-01-13T14:54:39.08544Z\",\n", + " updated_at: \"2026-01-13T14:54:39.08544Z\",\n", + " email: \"guillermo.arrieta@lasalle.mx\"\n", + " }\n", + " ],\n", + " created_at: \"2026-01-13T14:54:39.081453Z\",\n", + " updated_at: \"2026-03-02T19:38:13.130638Z\",\n", + " is_anonymous: false\n", + " }\n", + "}\n" + ] } ], "source": [ @@ -102,6 +232,7 @@ " console.log(event, jwt);\n", " // store in the session\n", " localStorage.setItem(\"jwt\", JSON.stringify(session));\n", + "\n", " }\n", "});\n", "\n",