douglasnaphas / madliberation

Mad lib Haggadahs.
Apache License 2.0
1 stars 4 forks source link

/login API endpoint that exchanges code for JWTs #86

Open douglasnaphas opened 5 years ago

douglasnaphas commented 5 years ago

It should:

  1. Exchange the auth code for JWTs using the AWS tokens endpoint
  2. Check the JWTs if necessary
  3. Redirect to madliberationgame/logged-in or similar, sending the JWTs as cookies
douglasnaphas commented 5 years ago

Code to exchange an auth code for tokens

tokenHeaders = new Headers({
  'Content-Type': 'application/x-www-form-urlencoded',
  Authorization:
    'Basic MjVoNTR2ZDBjdW5kdDdpYWVvbjFybjhhMDI6MTNkc2gzaWd1dGVhcnI2b3IxbGdpaGVvN25yNTJudWM1bmZiMmIwMWR0cmc5ZjM0N3RhMg=='
});
fetch(
  'https://madliberationfederated.auth.us-east-1.amazoncognito.com/oauth2/token',
  {
    method: 'POST',
    body:
      'grant_type=authorization_code&client_id=25h54vd0cundt7iaeon1rn8a02&code=3160f7e7-22fc-4feb-8e64-33771559ae6f&redirect_uri=http://localhost:3000/index.html',
    headers: tokenHeaders
  }
)
  .then(r => r.json())
  .then(j => {
    console.log(j);
  });

Console:

tokenHeaders = new Headers({
  'Content-Type': 'application/x-www-form-urlencoded',
  Authorization:
    'Basic MjVoNTR2ZDBjdW5kdDdpYWVvbjFybjhhMDI6MTNkc2gzaWd1dGVhcnI2b3IxbGdpaGVvN25yNTJudWM1bmZiMmIwMWR0cmc5ZjM0N3RhMg=='
});
fetch(
  'https://madliberationfederated.auth.us-east-1.amazoncognito.com/oauth2/token',
  {
    method: 'POST',
    body:
      'grant_type=authorization_code&client_id=25h54vd0cundt7iaeon1rn8a02&code=3160f7e7-22fc-4feb-8e64-33771559ae6f&redirect_uri=http://localhost:3000/index.html',
    headers: tokenHeaders
  }
)
  .then(r => r.json())
  .then(j => {
    console.log(j);
  });
Promise {<pending>}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: undefined
VM67:17 
{id_token: "eyJraWQiOiJvUnFkdDJndHg4YnJFOXBZN3JkRUpqdlVqa1M4b0…3yZ8utJReN9LQ2_mU4H7U-zZgD8fkHEMJz2WlL1YCbWlXqs4A", access_token: "eyJraWQiOiJ1VHJ5ajVPTEVjVG16K2pSV3liWGZINTVJQmdLaT…EcURgVx4X0IoZ59YGgXfgl5KQoJx_RzWTv27MHQnh0KSnYXtw", refresh_token: "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUl…4YZE7V-qCKhQyqu4FDZFnQ8Hbw.Sdu6ankxBSE0KOGQs4GFJA", expires_in: 3600, token_type: "Bearer"}
access_token: "eyJraWQiOiJ1VHJ5ajVPTEVjVG16K2pSV3liWGZINTVJQmdLaTlocmt5YzVTNm9FVTNBPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI5OTQwNjdjZi05OWQxLTQ0ZDktYjU2Ni0yNDlkYjIxNmM0MzkiLCJ0b2tlbl91c2UiOiJhY2Nlc3MiLCJzY29wZSI6ImF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluIG9wZW5pZCBwcm9maWxlIGVtYWlsIiwiYXV0aF90aW1lIjoxNTQ1NDg5NzE4LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9Zbjg5eUtpem4iLCJleHAiOjE1NDU0OTMzMTgsImlhdCI6MTU0NTQ4OTcxOCwidmVyc2lvbiI6MiwianRpIjoiZTQ1NDZkNTktNDdmYS00MTE2LTk4NWItMTc5NGE0Yzg1ZjhhIiwiY2xpZW50X2lkIjoiMjVoNTR2ZDBjdW5kdDdpYWVvbjFybjhhMDIiLCJ1c2VybmFtZSI6Ijk5NDA2N2NmLTk5ZDEtNDRkOS1iNTY2LTI0OWRiMjE2YzQzOSJ9.bzaFPsBsmLIiJNW1vxt3D9y9IAsGqf9Ty-Nc6fI2l9lxFii8aox3k25LpzZvMDfoWcXg6KuSf-tU29DQeT4eU-zxQOmkZS26XxD_vUeZ8hws87eaqaLBUeujT9Qg2tzmczmRD7s-PMFYae53mZ_LH9cgWbjm1jWOB77rwbECZNvIFPuey69DwgwtlV91j6MsLIVT7LA9Eg7TFo2O4XsZtZuJOAV2QD1v5LaB4WiSWtPdtru6A_U1eoZHDTleaFcgwK14oGYeCU3gbGGLgBsHVmftM7-Ksv10pMq6kEcURgVx4X0IoZ59YGgXfgl5KQoJx_RzWTv27MHQnh0KSnYXtw"
expires_in: 3600
id_token: "eyJraWQiOiJvUnFkdDJndHg4YnJFOXBZN3JkRUpqdlVqa1M4b0N6RnhzTHQ3NGFKcXlVPSIsImFsZyI6IlJTMjU2In0.eyJhdF9oYXNoIjoiZnE4TlBsZkdYSXV1V3oyM3hVWG0zZyIsInN1YiI6Ijk5NDA2N2NmLTk5ZDEtNDRkOS1iNTY2LTI0OWRiMjE2YzQzOSIsImF1ZCI6IjI1aDU0dmQwY3VuZHQ3aWFlb24xcm44YTAyIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTQ1NDg5NzE4LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9Zbjg5eUtpem4iLCJuaWNrbmFtZSI6IkRvdWcgRmVkIiwiY29nbml0bzp1c2VybmFtZSI6Ijk5NDA2N2NmLTk5ZDEtNDRkOS1iNTY2LTI0OWRiMjE2YzQzOSIsImV4cCI6MTU0NTQ5MzMxOCwiaWF0IjoxNTQ1NDg5NzE4LCJlbWFpbCI6ImRvdWdsYXNuYXBoYXNAZ21haWwuY29tIn0.UK9iiGpRu72lWf7AILryRdEqftWlGzL-Ip3kDbAkWF-R2ctpvjFBzalp5YYdj1zZ2vjCk5xBB_MUjfQCmTyMbLzQe9ih9a6vHEGhCu4ZBLV6iS1d78LvmsI2VSdKLUr2SXvRrdU0QmUMkzXf4yVD7duIo5gecXLtR5tHBJ4dpZ-N9P3QLQj2SyLcDMA-TFWs7iYNuDqeg0Bnz6luk5TJ18fCbNYnWQYyFlLgPRPI0I-e7_kbIDY2kdOxHGFWV_sMvw8wwtSAQQE4FyhtSt7JRWYeg7dW3fsW5Vz533yZ8utJReN9LQ2_mU4H7U-zZgD8fkHEMJz2WlL1YCbWlXqs4A"
refresh_token: "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.eY9JtyblL_lpw_XqWRAFEXQErFLjwYXpP-SjtytliarkCBfGj8praPvyAqgCNs6WXj2y0FN1V3wu97z_j3XS7rVwL6lfKj-XZkSSPzp9P3959TS8Z-wQZkMoLkrmV12B5YGcaJdl-OoOep9Eh3rc_olSko5r5UzFI17XbB3SzIbOHyKTdgN-xlnElP1Txq1TDuK40FYMabgVUjiQlsG7tqpaJI3zC2V-
d3aJYw50iGwFQ6SqVSlm36b9jgCwPAUWW7KU1Xyf1-GpX0A7xrXFcimFBHXsH8-ddvHNAFoAskKHgFkLTocaYO7tl9BRZoyqwB46J8t3-Q1XggQB_ZtQTw.wNS3AsJd5jRRpzYd.jCh_WZEkpvXtNYutN4BwFnS2w5RL_YuU2wlwY_QtODy9--2fP-lM2FgoF4gV0gGKeo4S1-8Ww4wuSE4nEHmu7iIrQcZY2_T6dTWkvNusZk7CLUPpBJWm97j_PgsBnK5KT1WN7xMN4nOczIMO4NqJMIZJCfzJFRvGjvqs-NtSeAQU3IUoNOYCNgGUGpsXfa4U5VzuQR4nRS7o3xMj7q0-DvgXtOmO6bZnp4wDiLV1C-gVqs8GjW973ziQnr-SKTm0tZQW3X3SI3FiTr66LX71csan0_QTNKKA_pQyXrAyrgFrpiVfmUjjFvljnxCr1UnXckO7K-GKvC1AHUOvH4FcPI2B0lVn0476r9SY0Qa6XFRmaUmWO9ns7gmUXALXsZ7qAZvV3POjj1mfm3AG7chWtVPW7NVtp0d0rKiUCSq7pcEsoCOpAm7Ekjq3OxLTNDOVrs2jan6Zvgd3yWG6uCWeuIEJWmShHy5FuRH5Gvf9tYPVDrE1c3JpC5qmIQv9Lb4fxJ4tV96n4NB5Zv6jzmZubfH_Kb2roc1OjTOHBNTnQnFjx293x7H2-yOvztT3g9Nop3FTR_smRDY9vGZl9bFF-k2i8BWeWb-l5fYaM1ekfpxKUya0AXsbbR6u7w_Ag2XZnVbAXC_NioeizKvu_3D0U_9839PLX_jd-oAV2VKQmp-gcw41jDHZptf78tgsGc0kZkFf9FP67tVIl1Laex9cJKPDRlg4Lv9r7o4V2dXj0XD-AEagMpcHe9UHhL3M2_Y-7WCFK2FYn2uaY5lNW87uBnC5avzh6y4uIem4N8dbHtiDqqDB9RaooXNQ4isCXlSdFAF3qB4esjppJKKeW4CQRNv8kQdsFcisConRbt6v7pKc2-CSTmcJGdGDj3OM3mWi-PZEL5kmx48wBaXjbBwPzyDDrwkMUe8XPYOvo2CZWmuHVHJNaD0opIWqfbWdj-yQrVpp77O_NZvyWZzcsvjbg6Nxx_1NrNIXZfa09d0INaD-x9CDmk1iikyVMGA5-Q392gSB5myiPYZXrsJyrAAxl9p2dIw099ZAYqlP4z7kjHjQVOlfjx-o3aAZeU7rpXZov0EiwRCDCJbTR3tB4xSsLNlB3mgtpcg5X8HigxaFFDs_qwjO0KgPZ2J0AvZ0zadI1yCxBayjP8spCDr6BePuvkrvYt6gEOWM_s525UEcWy7HekesmQBL3UKXy8vs_YpPSW93tn0PZbsX1xw1-Lviv4-71E_dRwECE45YeUlGlylnG5VJhMbisc0BtFST0fEcTj0q4YZE7V-qCKhQyqu4FDZFnQ8Hbw.Sdu6ankxBSE0KOGQs4GFJA"
token_type: "Bearer"
__proto__: Object

screen shot 2018-12-24 at 1 16 47 pm