📔
Blog
HOMEPORTFOLIOHIRE MEGITHUB
  • Home
  • 🙇Database
    • Oracle Database
      • 🍏LDOM Oracle VM for SPARC
      • 🍎Oracle Processor Core Factor Table
      • 🍐Check Oracle Error in Alert Log with SQL*Plus
      • 🍊Create Oracle Corrupt Data Block
      • 🍋RMAN Backup Tuning
      • 🍌Install NTP on Oracle Linux
      • 🍉Best Practice Check Tablespace Size on Oracle
      • 🍇Fix Password File Missing on Oracle
      • 🫐Check Oracle Error Message with OERR
      • 🍓Change and Restore Password on Oracle
      • 🍈Fix Oracle could not find Archive Log
      • 🍒Check Database Uptime on Oracle
      • 🍑Fix Oracle Date Format
      • 🥭Identity Column on Oracle
      • 🍍Fix Oracle Service handle not Initialized
      • 🥥GoldenGate Credential Store
      • 🥝Create Auto Increment on Oracle
      • 🍅Recompile Object Invalid on Oracle
      • 🍆Create Database Link on Oracle
      • 🥑Cluster vs Grid
      • 🫒Install DBSAT for Oracle Database 11gR2
      • 🥦Fix Oracle End-of-File on Communication Channel
      • 🥬Fix Oracle Database Out of Memory
      • 🫑Export and Import Oracle Database with Data Pump
      • 🥒Monitor Log Switch each Hour of Day on Oracle with SQL*Plus
      • 🌶️Change Column Format on Oracle with SQL*Plus
      • 🌽Check Version Component on Oracle with SQL*Plus
      • 🥕Check Database Size on Oracle with SQL*Plus
      • 🧄Migrate Oracle Database with RMAN
      • 🧅Fix Enterprise Manager Error OC4J Configuration issue
    • Microsoft SQL Server
      • 💊Backup SQL Server Database with SQL Backup and FTP
      • 💉Backup Full SQL Server with SQL Script
  • 🙇‍♀️INFRASTRUCTURE
    • DNS
      • 📦Fix Ldap Error Search Configuration Naming Context failed
      • 📦Join Domain to Active Directory on Ubuntu 22.04
      • 📦Sender Policy Framework Record
      • 📦Migrate User on Active Directory to Another Domain
      • 📦Fix can’t Delete Object on Active Directory
      • 📦Create Conditional Forwarder DNS on Windows Server 2012 R2
      • 📦Create Stub DNS Zone on Windows Server 2012 R2
      • 📦Domain Permission Admin
      • 📦Domain Model
      • 📦Active Directory ( AD ) 101
    • Network
      • 👥Local Area Network 101
      • 👥Export and Import Session on SecureCRT
      • 👥VPN Protocol
    • Security
      • 🎩Scam Mail
      • 🎩Disable Antivirus Protection on Windows 10
      • 🎩Fix Security Certificate is not Trusted
      • 🎩Best Practice Ransomware Protection
      • 🎩Digital Forensic
      • 🎩Check Installed Patch Compare Vulnerable on Windows 10
    • ISO 27001
      • 🐶Scenario-Based Risk
  • 🙇‍♂️Server
    • Windows Server
      • 👺Upgrade Windows Server 2003 SP2 to Windows Server 2008 R2
      • 👺Best Practice After Install Windows Server
      • 👺Windows Server Product Key
      • 👺How to convert PFX to CRT and KEY File on Windows Server
      • 👺Check Security Windows Application with Winchecksec
      • 👺Fix Internet Explorer Block Website on Windows Server 2019
      • 👺Install Windows Admin Center on Windows Server 2019
    • Linux Server
      • 👿Fix SSH Error: no matching key exchange method found
      • 👿Fix Ubuntu Package Manager Lock: Could not get lock /var/lib/dpkg/lock
      • 👿Install Kali Linux GUI on Windows Subsystem for Linux
      • 👿How to get DateTime History on Linux
      • 👿Change IP and Hostname on Ubuntu 18.04
      • 👿iSCSI Initiator on CentOS 7
      • 👿TMUX Command
      • 👿Create User on Linux
      • 👿Change Username and UID / GID on Linux
    • User
      • 👽OSQuery
      • 👽How to decompress GZIP, BZIP and TAR File on Windows 10
      • 👽Upgrade Windows 10 Version 1803 to 1903
      • 👽Join Windows Insider Program on Windows 10
      • 👽Fix RDP Error Exceeded the Maximum Number of Allowed Connections
      • 👽How to enable DNS over HTTPS on Firefox
  • 🧑‍🍼Software
    • VMware
      • 🌠Fix Deploy OVA Error no Support Hardware Versions on VMware ESXi 6.7
      • 🌠VMware Workstation and VMware ESXi Compatible
      • 🌠Promiscuous Mode and Forged Transmits on VMware vSphere 6.5
      • 🌠Update Patches on VMware ESXi 6.7 with ESXCLI
      • 🌠Fix Alert Hyperthreading Unmitigated on VMware ESXi 6.7
      • 🌠Fix VMware Error Client Session is no Longer Authenticated
      • 🌠Merge AVHDX and VHDX for Convert to VMDK
      • 🌠Convert VMDK to VHDX with Microsoft Virtual Machine Converter
      • 🌠Fix VMware Workstation Device / Credential Guard are not Compatible
      • 🌠Convert VMDK to VHDX with StarWind V2V Converter
    • Veeam Backup
      • 🧊Install Veeam Backup & Replication 11 on Windows
      • 🧊Backup Planning Matrix
      • 🧊Fix Veeam Backup Error Full Backup File Merge Failed
    • ESET
      • 🐕‍🦺Fix can’t Uninstall ESET Management Agent
  • 👩‍🍼Programming
    • Fundamental
      • 🔵ID Token vs Access Token
      • 🔴NULL vs NOT NULL
      • 🟣Microsoft Universal Data Access
      • 🟡Flow Graph Aptitude Test
      • 🟠C Pyramid – Part I
      • 🟤C Pyramid – Part II
      • ⚪JSON Web Token
      • 🟦Memory Architecture
    • Tools
      • AI Tools
        • ❤️Generative AI Tools
        • 💙Prompt Tools
        • 💚Dataset Tools
      • Extension Tools
        • ❄️Top Extension Microsoft Edge
        • ❄️Top Extension Visual Studio Code
      • Other Tools
        • 🚗Business Tools
        • 🚕CI/CD Tools
        • 🚙Design Tools
        • 🛻Freelance Tools
        • 🚌Hands-On Lab Tools
        • 🚎Productive Tools
        • 🏎️Programming Tools
        • 🚓SEO Tools
        • 🚑Mac Tools
      • Package Tools
        • 🧶Top NuGet Package .NET Core
      • Visual Studio Code
        • 🌑How to show Folder .git in Visual Studio Code
        • 🌑Fix CMake not Found Visual Studio
        • 🌑Backup Extension for Visual Studio Code
    • Python
      • Poetry
        • 🐍Poetry Virtual Environment Command
    • PHP
      • Laravel
        • 🍂Laravel Redis Key-Value Store
    • .NET Core
      • 🐹.NET Core Automatic Code Review with SonarQube
      • 🐹.NET Core Disable Authentication in Development Environment
      • 🐹Overview .NET Core
  • 👨‍🍼Other
    • Blog
      • 🎃Blog Dell
      • 🎃Blog Gitbook
      • 🎃Blog Network
    • Big Data
      • 🐱Big Data ของกระทรวงสาธารณสุข
    • Chat Bot
      • Chatfuel
        • 🍭Facebook Chatbot with Chatfuel
      • Dialogflow
        • ⛱️Dialogflow Connect Multiple Firebase Realtime Database
        • ⛱️Chatbot with Dialogflow and Firebase Realtime Database
    • Docker
      • 🐳How to Trust Sign Image on Docker
      • 🐳Upgrade Docker Compose
      • 🐳Install Nginx-RTMP and FSTV-Monitor on Docker
    • Machine Learning
      • 🧤PC SPEC for Deep Learning 2021
      • 🧤Install YOLO Object Detection on Windows 10
      • 🧤Thai Natural Language Processing with Python
      • 🧤Install Tensorflow with GPU on Windows 10
      • 🧤PC SPEC for Deep Learning 2019
      • 🧤Speech to Text with Google API
      • 🧤CUDA-Z
      • 🧤DVC Version Control for Machine Learning
    • Standard
      • 🧬Digital ID
      • 💻Computer Naming Convention
      • 🎁มาตรฐานข้อมูลกลาง
    • Policy
      • 🍔GDPR & PDPA
      • 🍟TDPG 2.0
      • 🍕Cookie Consent
    • WSL
      • 🧿How to move Distribution Data WSL to new Location
      • 🧿Export and Import Distro on Windows Subsystem for Linux
      • 🧿Install Docker on Windows Subsystem for Linux
  • 🧙‍♂️MICROSOFT 365
    • Outlook
      • 📩How to enable Forward Email on Microsoft Office 365 to Another Domain
      • 📩Fix Mailbox Storage Limit on Microsoft Office 365 with Compliance Search
      • 📩Fix can’t Search Thai Language on Microsoft Outlook
    • Power Automate
      • 🤖How to Rename all Files in Folder use UUID with Power Automate Desktop
      • 🤖How to get SharePoint List Comment with Power Automate
      • 🤖How to post Approve Comment to SharePoint List with Power Automate
      • 🤖Generate Unique ID when Submit Microsoft Form with Power Automate
      • 🤖Notification Maintenance when SharePoint List Create with Power Automate
      • 🤖Send Email and Share File Word Document with Power Automate
      • 🤖Generate Word Document when Submit Microsoft Form with Power Automate
Powered by GitBook
On this page
  • Type Token
  • ID Token
  • JWT Token ( Encode )
  • JWT Token ( Decode )
  • Access Token

Was this helpful?

  1. Programming
  2. Fundamental

ID Token vs Access Token

Last updated 1 year ago

Was this helpful?

หากพูดถึง Token ที่ใช้กันในปัจจุบัน หลายคนคงเคยใช้ JSON Web Token (JWT) กับ OAuth Token แต่เชื่อว่าคงมีหลายคนที่เคยสงสัยเหมือนกับผมว่า แล้วมันต่างกันยังไง ใช้กับกรณีใดบ้าง ก่อนอื่นต้องมาทำความรู้จักกับประเภทของ Token กันก่อน

Type Token

Authentication Token

เป็น Token ที่ใช้ในการพิสูจน์ตัวตนของผู้ใช้ในระบบ เช่น ที่เป็นไปตามข้อกำหนด OpenID Connect

Access Token

เป็น Token ที่ใช้สำหรับ Application ที่ต้องการเข้าถึงข้อมูลทรัพยากรต่าง ๆ บน Server เช่น OAuth 2.0

Session Token

เป็น Token ที่ใช้ในการเก็บข้อมูล Session ของผู้ใช้ที่ Login เข้าสู่ระบบ และทำให้ระบบรู้ว่าผู้ใช้คือใครและต้องการเข้าถึงบริการหรือข้อมูลใด

Communication Token

เป็น Token ที่ใช้ในการเข้าถึงบริการหรือเครือข่าย เช่น CSRF Token ที่ใช้ในการป้องกันการโจมตีแบบ Cross-Site Request Forgery ( CSRF )

ID Token

ใข้ในการระบุตัวตนของผู้ใช้ในระบบเท่านั้น ซึ่งก็คือ Authentication Token นั่นแหละ โดยหลังจากที่เราทำการกรอก Username และ Password ระบบจะทำการ Authentication แล้วส่ง Token กลับมา เพื่อให้ Client สามารถทำการดึงข้อมูล User Profile

JWT Token ( Encode )

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT Token ( Decode )

HEADER
{
  "alg": "HS256",
  "typ": "JWT"
}
PAYLOAD
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
VERIFY SIGNATURE
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  
)

Access Token

ใช้ในการเข้าถึงข้อมูลทรัพยากรต่าง ๆ บนเครื่อง Server ซึ่งก็คือ Authorization Token นั่นแหละ มักถูกส่งมาพร้อมกับ ID Token เพื่อ Allow Resource เหมาะกับการนำไปใช้กับการเข้าถึงพวก API หรือระหว่าง Service กับ Service คุยกัน

ไม่ควรกำหนด Scope ในการเข้าถึงทรัพยากรเกินความจำเป็น และในการ Implement จะต้องดูว่าจะนำไปใช้ในลักษณะใด นอกจากนี้ Access Token ไม่ใช่ Single Sign-On แต่สามารถนำไปประยุกต์ใช้ได้

Request
client_id + client_secret
Response
{
  "access_token":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
  "token_type":"Bearer",
  "expires_in":3600,
  "refresh_token":"IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
  "scope":"create"
}

ไม่ควรใช้ ID Token เพื่อเข้าถึง API โดยตรง หรือ เข้าถึงทรัพยากรต่าง ๆ บนเครื่อง Server และควรทำตามมาตรฐานความปลอดภัย

👩‍🍼
🔵
JSON Web Token ( JWT )
Token Best Practices
ID TokensAuth0 Docs
Access Tokens - OAuth 2.0 SimplifiedOAuth 2.0 Simplified
Logo
Logo