จัดการ error response ของ OAuth2 authentication บน Spring
เมื่อ blog ก่อนๆ ได้ทำ OAuth2 authentication ให้กับระบบงาน พอลองเล่นกับพวก error พบว่าระบบ return response กลับไปไม่เหมือนกัน
ผมคิดว่าเราควรจะต้องปรับปรุง API ของเราให้ return response ในรูปแบบที่คล้่ายๆ กัน และ HTTP status code (401, 403) สื่อถึง error ที่เกิดขึ้นจริงๆ (แต่ถ้าใครมาทางลัทธิส่ง HTTP status code 200 ต่างกันที่ error message ก็แล้วแต่)
ขอหยิบยกส่วนของ resource server configuration จาก blog ก่อนขึ้นมา
สร้าง SecurityExceptionHandler ขึ้นมา
คำอธิบาย ทำการ handle ทั้ง authentication และ authorization error โดยสร้าง ResponseEntity ของ Spring ขึ้นมา จากนั้นก็แปลงเป็น HttpServletResponse โดยใช้ Jackson เป็นตัว map Java Object เป็น JSON String
เสร็จแล้วก็ไป configure resource server ให้ใช้ handler ตัวนี้
ทำการทดสอบด้วยการใช้ API
ไปดูตัวอย่างโค้ด https://github.com/raksit31667/example-spring-order