Token ID dalam Platform identitas Microsoft
Token ID adalah jenis token keamanan yang berfungsi sebagai bukti autentikasi, mengonfirmasi bahwa pengguna berhasil diautentikasi. Informasi dalam token ID memungkinkan klien untuk memverifikasi bahwa pengguna adalah siapa yang mereka klaim, mirip dengan tag nama di konferensi. Server otorisasi mengeluarkan token ID yang berisi klaim yang membawa informasi tentang pengguna. Mereka dapat dikirim bersama atau alih-alih token akses, dan selalu format JWT (JSON Web Token).
Token ID berbeda dari token akses, yang berfungsi sebagai bukti otorisasi. Klien rahasia harus memvalidasi token ID. Anda tidak boleh menggunakan token ID untuk memanggil API.
Aplikasi pihak ketiga dimaksudkan untuk memahami token ID. Token ID tidak boleh digunakan untuk tujuan otorisasi. Token akses digunakan untuk otorisasi. Klaim yang disediakan oleh token ID dapat digunakan untuk UX di dalam aplikasi Anda, sebagai kunci di dalam database, dan menyediakan akses ke aplikasi klien. Untuk informasi selengkapnya tentang klaim yang digunakan dalam token ID, lihat referensi klaim token ID. Untuk informasi selengkapnya tentang otorisasi berbasis klaim, lihat Mengamankan aplikasi dan API dengan memvalidasi klaim.
Format token
Ada dua versi token ID yang tersedia di platform identitas Microsoft: v1.0 dan v2.0. Versi ini menentukan klaim yang ada dalam token. Token ID v1.0 dan v2.0 memiliki perbedaan pada informasi yang dibawa. Versi ini didasarkan pada titik akhir dari mana ia diminta. Aplikasi baru harus menggunakan v2.0.
- v1.0:
https://login.microsoftonline.com/common/oauth2/authorize
- v2.0:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
Contoh token ID v1.0
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyIsImtpZCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyJ9.eyJhdWQiOiJiMTRhNzUwNS05NmU5LTQ5MjctOTFlOC0wNjAxZDBmYzljYWEiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkvIiwiaWF0IjoxNTM2Mjc1MTI0LCJuYmYiOjE1MzYyNzUxMjQsImV4cCI6MTUzNjI3OTAyNCwiYWlvIjoiQVhRQWkvOElBQUFBcXhzdUIrUjREMnJGUXFPRVRPNFlkWGJMRDlrWjh4ZlhhZGVBTTBRMk5rTlQ1aXpmZzN1d2JXU1hodVNTajZVVDVoeTJENldxQXBCNWpLQTZaZ1o5ay9TVTI3dVY5Y2V0WGZMT3RwTnR0Z2s1RGNCdGsrTExzdHovSmcrZ1lSbXY5YlVVNFhscGhUYzZDODZKbWoxRkN3PT0iLCJhbXIiOlsicnNhIl0sImVtYWlsIjoiYWJlbGlAbWljcm9zb2Z0LmNvbSIsImZhbWlseV9uYW1lIjoiTGluY29sbiIsImdpdmVuX25hbWUiOiJBYmUiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaXBhZGRyIjoiMTMxLjEwNy4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJub25jZSI6IjEyMzUyMyIsIm9pZCI6IjA1ODMzYjZiLWFhMWQtNDJkNC05ZWMwLTFiMmJiOTE5NDQzOCIsInJoIjoiSSIsInN1YiI6IjVfSjlyU3NzOC1qdnRfSWN1NnVlUk5MOHhYYjhMRjRGc2dfS29vQzJSSlEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6IkFiZUxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJMeGVfNDZHcVRrT3BHU2ZUbG40RUFBIiwidmVyIjoiMS4wIn0=.UJQrCA6qn2bXq57qzGX_-D3HcPHqBMOKDPx4su1yKRLNErVD8xkxJLNLVRdASHqEcpyDctbdHccu6DPpkq5f0ibcaQFhejQNcABidJCTz0Bb2AbdUCTqAzdt9pdgQvMBnVH1xk3SCM6d4BbT4BkLLj10ZLasX7vRknaSjE_C5DI7Fg4WrZPwOhII1dB0HEZ_qpNaYXEiy-o94UJ94zCr07GgrqMsfYQqFR7kn-mn68AjvLcgwSfZvyR_yIK75S_K37vC3QryQ7cNoafDe9upql_6pB2ybMVlgWPs_DmbJ8g0om-sPlwyn74Cc1tW3ze-Xptw_2uVdPgWyqfuWAfq6Q
Lihat token sampel v1.0 ini di jwt.ms.
Contoh token ID v2.0
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw
Lihat token sampel v2.0 ini di jwt.ms.
Masa pakai token
Secara default, token ID valid selama satu jam - setelah satu jam, klien tersebut harus mendapatkan token ID baru.
Anda dapat menyesuaikan masa pakai token ID untuk mengontrol seberapa sering aplikasi klien kedaluwarsa sesi aplikasi, dan seberapa sering mengharuskan pengguna untuk mengautentikasi lagi baik secara diam-diam atau interaktif. Untuk informasi selengkapnya, baca Token seumur hidup yang dapat dikonfigurasi.
Memvalidasi token
Untuk memvalidasi token ID, klien Anda dapat memeriksa apakah token telah dirusak. Klien Anda juga dapat memvalidasi penerbit untuk memastikan bahwa penerbit yang benar telah mengirimkan kembali token tersebut. Karena token ID selalu merupakan token JWT, banyak pustaka yang ada untuk memvalidasi token ini - Anda harus menggunakan salah satu pustaka ini daripada melakukannya sendiri. Hanya klien rahasia yang harus memvalidasi token ID. Untuk informasi selengkapnya, lihat Mengamankan aplikasi dan API dengan memvalidasi klaim.
Aplikasi publik (kode sepenuhnya dijalankan pada perangkat atau jaringan yang tidak Anda kendalikan seperti browser pengguna atau jaringan rumah mereka) tidak mendapat keuntungan dari validasi token ID. Dalam hal ini, pengguna berbahaya dapat mencegat dan mengedit kunci yang digunakan untuk validasi token.
Klaim JWT berikut harus divalidasi dalam token ID setelah memvalidasi tanda tangan pada token. Pustaka validasi token Anda juga dapat memvalidasi klaim berikut:
- Stempel waktu: stempel waktu
iat
,nbf
, danexp
semua harus jatuh sebelum atau sesudah waktu saat ini, sebagaimana mestinya. - Audiens: klaim
aud
harus sesuai dengan ID aplikasi untuk aplikasi Anda. - Nonce:
nonce
klaim dalam payload harus cocok dengan parameter nonce yang diteruskan ke/authorize
titik akhir selama permintaan awal.