
คำแนะนำการใช้งาน OpenID Connect สำหรับการยืนยันตัวตน
ข้อมูลสำหรับทดสอบ (Client ID, Client Secret) ติดต่อทาง Microsoft Teams arafan.h@psu.ac.th
ลิ้งก์แบบฟอร์ม ขอใช้บริการระบบยืนยันตัวตน (สำหรับเชื่อมต่อ OpenID)
ข้อมูลสำคัญ OpenID Connect
| รายการ | ค่า/URL |
|---|---|
| Authorization Endpoint | https://psusso.psu.ac.th/application/o/authorize/ |
| Token Endpoint | https://psusso.psu.ac.th/application/o/token/ |
| UserInfo Endpoint | https://psusso.psu.ac.th/application/o/userinfo/ |
| Logout Endpoint | https://psusso.psu.ac.th/application/o/[APP_NAME]/end-session/ |
| JWKS URI | https://psusso.psu.ac.th/application/o/[APP_NAME]/jwks/ |
| Issuer | https://psusso.psu.ac.th/application/o/[APP_NAME]/ |
การตั้งค่า Client Application
1 ลงทะเบียนแอปพลิเคชัน
กรอกข้อมูลขอ OpenID และกำหนด Permission ที่ต้องการในลิงก์ด้านบน
ข้อมูลที่จะได้รับหลังจากลงทะเบียน:
| รายการ | ค่าที่ได้รับ |
|---|---|
| Client ID | client_id_1234567890 |
| Client Secret | client_secret_1234567890 |
| OpenID Configuration URL | https://psusso.psu.ac.th/application/o/[APP_NAME]/.well-known/openid-configuration |
2 OAuth 2.0 Authorization Code Flow
ทุกภาษาสามารถใช้ Library สำเร็จรูปได้ หรือหากต้องการเขียน Authen flow เอง สามารถนำวิธีไปปรับใช้ตามภาษาที่ถนัด
ขั้นตอนการทำงานของ OAuth 2.0 Authorization Code:
Step 1: สร้าง URL สำหรับขออนุญาต
GET https://psusso.psu.ac.th/application/o/authorize/?
response_type=code&
client_id=CLIENT_ID&
redirect_uri=REDIRECT_URI&
scope=openid profile email psu_profile&
state=RANDOM_STRING
Step 2: รับ Authorization Code
หลังจากผู้ใช้เข้าสู่ระบบสำเร็จ ระบบจะ redirect กลับมาพร้อม Authorization Code: https://yourapp.com/callback?code=AUTH_CODE&state=RANDOM_STRING
Step 3: แลกเปลี่ยน Authorization Code เป็น Access Token
POST https://psusso.psu.ac.th/application/o/token/
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=REDIRECT_URI&
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET
Step 4: รับข้อมูลผู้ใช้
GET https://psusso.psu.ac.th/application/o/userinfo/
Authorization: Bearer ACCESS_TOKEN
3 Supported Scopes และ Claims
Supported Scopes
Scopes ที่รองรับในระบบ OpenID Connect:
psu_profile– ข้อมูลโปรไฟล์ PSU แบบละเอียดemail– ข้อมูลอีเมลผู้ใช้offline_access– ขอ Refresh Token
openid– สำหรับ OpenID Connectprofile– ข้อมูลโปรไฟล์พื้นฐาน
Claims Supported
Claims ทั้งหมดที่รองรับในระบบ:
| Claim | คำอธิบาย | ตัวอย่าง |
|---|---|---|
sub | รหัสประจำตัวผู้ใช้ | 1234567890 |
iss | Issuer ของ token | https://psusso.psu.ac.th/application/o/[APP_NAME]/ |
aud | Audience ของ token | client_id |
exp | Expiration time | 1735689599 |
iat | Issued at time | 1735685999 |
auth_time | เวลาที่ผู้ใช้ทำการยืนยันตัวตน | 1735685999 |
acr | Authentication Context Class Reference | urn:mace:incommon:iap:silver |
amr | Authentication Methods References | ["pwd"] |
nonce | ค่า nonce จากการขอ token | n-0S6_WzA2Mj |
email | อีเมล | somchai.j@psu.ac.th |
name | ชื่อเต็ม | สมชาย ใจดี |
preferred_username | ชื่อผู้ใช้ที่ต้องการแสดง | somchai.j |
username | ชื่อผู้ใช้งานในระบบ | somchai.j |
display_name | ชื่อแสดง | สมชาย ใจดี |
display_name_th | ชื่อแสดงภาษาไทย | สมชาย ใจดี |
first_name | ชื่อ | Somchai |
first_name_th | ชื่อภาษาไทย | สมชาย |
last_name | นามสกุล | Jaidee |
last_name_th | นามสกุลภาษาไทย | ใจดี |
position_th | ตำแหน่งภาษาไทย | นักวิชาการคอมพิวเตอร์ |
campus_th | วิทยาเขตภาษาไทย | วิทยาเขตหาดใหญ่ |
department_th | ภาควิชาภาษาไทย | ฝ่ายระบบโครงสร้างพื้นฐาน |
| faculty_th | คณะภาษาไทย | สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ |
office_name_th | ชื่อสำนักงานภาษาไทย | ฝ่ายระบบโครงสร้างพื้นฐาน สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ |
groups | กลุ่มผู้ใช้ | ["xxx", "yyy"] |
faculty_id | รหัสคณะ | 01 |
department_id | รหัสภาควิชา | 0103 |
campus_id | รหัสวิทยาเขต | 1 |
psu_id | PSU ID | 0045637 |
วิธีการแยก Staff/Student ให้แยกจาก List ของ groups
- นักศึกษา = student
- ศิษย์เก่า =alumni
- บุคลากร = staff
- อาจารย์ staff in groups และ position_th = “อาจารย์”
ตัวอย่างการเช็คสิทธิ์ (Python)
- นักศึกษา if “student” in groups:
- อาจารย์ if “staff” in groups and position_th == “อาจารย์”
ต้องการความช่วยเหลือเพิ่มเติม?
หากคุณมีเอกสาร คู่มือ หรือข้อเสนอแนะที่ต้องการแบ่งปันให้กับนักพัฒนาท่านอื่น สามารถส่งข้อมูลได้ที่: arafan.h@psu.ac.th (9045)
หมายเหตุ CitizenID จะไม่ได้รับเป็นค่าพื้นฐาน หากแอปพลิเคชันใดจำเป็นต้องใช้ ให้แจ้งเพิ่มเติม ในฟอร์มขอใช้บริการ

Leave a Reply
You must be logged in to post a comment.