Latihan 1: Single Sign-On & SAML — Auth

Latihan 1 dari materi Single Sign-On & SAML di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi tiga function di kode awal. Latihan ini memakai object JavaScript sebagai pengganti XML SAML.

  1. buildAuthRequest(spEntityId, idpUrl, requestId): SP membuat AuthnRequest. Kembalikan { type: "AuthnRequest", id: requestId, issuer: spEntityId, destination: idpUrl }.
  2. validateAssertion(assertion, spEntityId): assertion berbentuk { audience, subject, attributes }.
    • Kalau assertion.audience !== spEntityId: kembalikan { valid: false, reason: "Wrong audience" }.
    • Kalau sama: kembalikan { valid: true, userId: assertion.subject }. Di SAML, membandingkan dengan entity ID SP adalah cek Audience; Recipient dibandingkan dengan URL ACS.
  3. extractRoles(assertion): kembalikan array assertion.attributes.roles, atau [] kalau gak ada.

Baris-baris console.log dan object assertion di kode awal sudah ada, biarkan begitu. Output-nya harus persis delapan baris ini, berurutan:

  1. AuthnRequest
  2. https://myapp.com (issuer: argumen pertama)
  3. https://idp.corp.com/sso (destination: argumen kedua)
  4. true
  5. [email protected]
  6. false
  7. Wrong audience
  8. ["admin","editor"]

Dicek juga: buildAuthRequest("https://toko.id", "https://idp.x/sso", "r7").id adalah r7, validateAssertion untuk [email protected] dengan audience https://toko.id di https://toko.id memberi userId [email protected], dan extractRoles({ attributes: {} }) memberi array kosong (panjangnya 0).

Hint