การยกเลิกการลิงก์บัญชี

การยกเลิกการลิงก์อาจเริ่มจากแพลตฟอร์มของคุณหรือ Google และการแสดงสถานะลิงก์ที่สอดคล้องกันในทั้ง 2 แพลตฟอร์มจะช่วยให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด ระบบรองรับปลายทางการเพิกถอนโทเค็นหรือการป้องกันแบบครอบคลุมหลายบริการสําหรับการลิงก์บัญชี Google หรือไม่ก็ได้

บัญชีอาจยกเลิกการลิงก์ได้โดยการดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  • คำขอของผู้ใช้จาก
    • การตั้งค่าแอปพลิเคชันของ Google หรือบัญชี Google
    • แพลตฟอร์มของคุณ
  • ต่ออายุโทเค็นการรีเฟรชที่หมดอายุไม่สำเร็จ
  • กิจกรรมอื่นๆ ที่คุณหรือ Google เป็นผู้เริ่ม เช่น การระงับบัญชีโดยบริการตรวจจับการละเมิดและภัยคุกคาม

ผู้ใช้ขอให้ยกเลิกการลิงก์จาก Google

การยกเลิกการลิงก์บัญชีที่เริ่มต้นผ่านบัญชี Google หรือแอปของผู้ใช้จะลบโทเค็นการเข้าถึงและโทเค็นรีเฟรชที่ออกก่อนหน้านี้ นำความยินยอมของผู้ใช้ออก และเรียกใช้ปลายทางการเพิกถอนโทเค็น (ไม่บังคับ) หากคุณเลือกใช้

ผู้ใช้ขอให้ยกเลิกการลิงก์จากแพลตฟอร์มของคุณ

คุณควรระบุกลไกให้ผู้ใช้ยกเลิกการลิงก์ เช่น URL ไปยังบัญชีของตน หากคุณไม่ได้ระบุวิธีให้ผู้ใช้ยกเลิกการลิงก์ ให้ใส่ลิงก์ไปยังบัญชี Google เพื่อให้ผู้ใช้จัดการบัญชีที่ลิงก์ได้

คุณเลือกที่จะใช้ความเสี่ยงและการแชร์เหตุการณ์และการทำงานร่วมกัน (RISC) แล้วแจ้งให้ Google ทราบการเปลี่ยนแปลงสถานะการลิงก์บัญชีผู้ใช้ได้ ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีขึ้นเมื่อทั้งแพลตฟอร์มของคุณและ Google แสดงสถานะการลิงก์ที่เป็นปัจจุบันและสอดคล้องกันโดยไม่ต้องอาศัยการรีเฟรชหรือคำขอโทเค็นการเข้าถึงเพื่ออัปเดตสถานะการลิงก์

การหมดอายุของโทเค็น

Google จะพยายามต่ออายุโทเค็นรีเฟรชเมื่อใกล้หมดอายุเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นและบริการไม่หยุดชะงัก ในบางสถานการณ์ คุณอาจต้องได้รับความยินยอมจากผู้ใช้เพื่อลิงก์บัญชีอีกครั้งเมื่อไม่มีโทเค็นรีเฟรชที่ถูกต้อง

การออกแบบแพลตฟอร์มให้รองรับโทเค็นการเข้าถึงและโทเค็นรีเฟรชที่ยังไม่หมดอายุหลายรายการจะช่วยลดเงื่อนไขการแข่งขันที่ปรากฏในการแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ในสภาพแวดล้อมคลัสเตอร์ หลีกเลี่ยงการหยุดชะงักของผู้ใช้ และลดสถานการณ์ที่ซับซ้อนเกี่ยวกับเวลาและการจัดการข้อผิดพลาด แม้ว่าระบบจะมีความสอดคล้องกันในที่สุด แต่ทั้งโทเค็นที่ยังไม่ได้หมดอายุก่อนหน้านี้และโทเค็นที่เพิ่งออกใหม่อาจใช้งานได้เป็นระยะเวลาสั้นๆ ระหว่างการแลกเปลี่ยนการต่ออายุโทเค็นระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ และก่อนที่จะมีการซิงค์คลัสเตอร์ ตัวอย่างเช่น คำขอของ Google สำหรับบริการของคุณที่ใช้โทเค็นการเข้าถึงก่อนหน้าที่ยังไม่หมดอายุเกิดขึ้นหลังจากที่คุณออกโทเค็นการเข้าถึงใหม่ แต่ก่อนที่ Google จะได้รับและทำการซิงค์คลัสเตอร์ เราขอแนะนําให้ใช้มาตรการรักษาความปลอดภัยอื่นแทนการเปลี่ยนโทเค็นการรีเฟรช

เหตุการณ์อื่นๆ

บัญชีอาจยกเลิกการลิงก์ได้เนื่องด้วยสาเหตุอื่นๆ อีกหลายประการ เช่น ไม่มีการดําเนินการ การระงับ พฤติกรรมที่เป็นอันตราย และอื่นๆ ในกรณีเช่นนี้ แพลตฟอร์มของคุณและ Google จะจัดการบัญชีผู้ใช้และลิงก์อีกครั้งได้ดีที่สุดด้วยการแจ้งให้กันและกันทราบถึงการเปลี่ยนแปลงในบัญชีและสถานะการลิงก์

ใช้ปลายทางการเพิกถอนโทเค็นเพื่อให้ Google เรียกใช้ และแจ้ง Google เกี่ยวกับเหตุการณ์การเพิกถอนโทเค็นโดยใช้ RISC เพื่อให้แพลตฟอร์มและ Google รักษาสถานะการลิงก์บัญชีผู้ใช้ให้สอดคล้องกัน

ปลายทางการเพิกถอนโทเค็น

หากคุณรองรับ OAuth 2.0 ปลายทางการเพิกถอนโทเค็น แพลตฟอร์มของคุณจะได้รับการแจ้งเตือนจาก Google เพื่อให้คุณแจ้งให้ผู้ใช้ทราบ ของการเปลี่ยนแปลงสถานะลิงก์ ทำให้โทเค็นใช้งานไม่ได้ และล้างข้อมูลเข้าสู่ระบบเพื่อรักษาความปลอดภัย การให้สิทธิ์

คำขอมีรูปแบบดังต่อไปนี้

POST /revoke HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token

ปลายทางการเพิกถอนโทเค็นต้องจัดการพารามิเตอร์ต่อไปนี้ได้

พารามิเตอร์ปลายทางการเพิกถอน
client_id สตริงที่ระบุต้นทางของคำขอเป็น Google สตริงนี้ต้อง ได้รับการลงทะเบียนในระบบเป็นตัวระบุที่ไม่ซ้ำกันของ Google
client_secret สตริงลับที่คุณลงทะเบียนกับ Google สําหรับบริการของคุณ
token โทเค็นที่จะเพิกถอน
token_type_hint (ไม่บังคับ) ประเภทของโทเค็นที่จะถูกเพิกถอน ไม่ว่าจะเป็นประเภท access_token หรือ refresh_token หากไม่ระบุ ค่าเริ่มต้นคือ access_token

แสดงผลการตอบกลับเมื่อโทเค็นถูกลบหรือไม่ถูกต้อง โปรดดูข้อมูลต่อไปนี้สำหรับ ตัวอย่างเช่น

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

หากลบโทเค็นไม่ได้ไม่ว่าด้วยเหตุผลใดก็ตาม ให้แสดงรหัสการตอบกลับ 503 ดังที่แสดงในตัวอย่างต่อไปนี้

HTTP/1.1 503 Service Unavailable
Content-Type: application/json;charset=UTF-8
Retry-After: HTTP-date / delay-seconds

Google จะพยายามส่งคำขออีกครั้งในภายหลังหรือตามคำขอของ Retry-After

การป้องกันแบบครอบคลุมหลายบริการ (RISC)

หากคุณรองรับการป้องกันแบบครอบคลุมหลายบริการ แพลตฟอร์มของคุณจะแจ้งให้ Google ทราบได้เมื่อ โทเค็นเพื่อรีเฟรชหรือการเข้าถึงจะถูกเพิกถอน การดำเนินการนี้ช่วยให้ Google สามารถแจ้งผู้ใช้ การเปลี่ยนแปลงสถานะลิงก์, ทำให้โทเค็นใช้งานไม่ได้, ล้างข้อมูลเข้าสู่ระบบเพื่อรักษาความปลอดภัย และ การให้สิทธิ์แบบอนุญาต

การป้องกันแบบครอบคลุมหลายบริการจะอิงตาม มาตรฐาน RISC ที่พัฒนาขึ้นใน รากฐานของ OpenID

โทเค็นเหตุการณ์ด้านความปลอดภัย ใช้เพื่อแจ้งให้ Google ทราบเกี่ยวกับการเพิกถอนโทเค็น

เมื่อถอดรหัสแล้ว เหตุการณ์การเพิกถอนโทเค็นจะมีลักษณะดังนี้

{
  "iss":"http://risc.example.com",
  "iat":1521068887,
  "aud":"google_account_linking",
  "jti":"101942095",
  "toe": "1508184602",
  "events": {
    "https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
      "subject_type": "oauth_token",
      "token_type": "refresh_token",
      "token_identifier_alg": "hash_SHA512_double",
      "token": "double SHA-512 hash value of token"
    }
  }
}

โทเค็นของเหตุการณ์ความปลอดภัยที่คุณใช้เพื่อแจ้ง Google เกี่ยวกับเหตุการณ์การเพิกถอนโทเค็น ต้องเป็นไปตามข้อกำหนดในตารางต่อไปนี้

เหตุการณ์การเพิกถอนโทเค็น
iss การอ้างสิทธิ์ผู้ออกบัตร: นี่คือ URL ที่คุณโฮสต์และแชร์ให้ Google ระหว่างการลงทะเบียน
aud การอ้างสิทธิ์กลุ่มเป้าหมาย: ระบุว่า Google เป็นผู้รับ JWT ทั้งนี้ ต้องตั้งค่าเป็น google_account_linking
jti การอ้างสิทธิ์ JWT ID: รหัสที่ไม่ซ้ำกันที่คุณสร้างขึ้นสำหรับ โทเค็นการดำเนินการด้านความปลอดภัย
iat ออกขณะอ้างสิทธิ์: นี่คือค่า NumericDate ซึ่งแสดงเวลาที่สร้างโทเค็นกิจกรรมด้านความปลอดภัยนี้
toe เวลาที่เกิดการอ้างสิทธิ์กิจกรรม: นี่คือไม่บังคับ ค่า NumericDate ซึ่งแสดงเวลาที่มีฟังก์ชัน โทเค็นถูกเพิกถอนแล้ว
exp การอ้างสิทธิ์เวลาหมดอายุ: อย่าใส่ช่องนี้ เนื่องจากเหตุการณ์ที่เกิดขึ้นในการแจ้งเตือนนี้ได้เกิดขึ้นแล้ว
events
การอ้างสิทธิ์การดำเนินการด้านความปลอดภัย: นี่คือออบเจ็กต์ JSON และ ต้องมีเหตุการณ์เพิกถอนโทเค็นเพียงรายการเดียวเท่านั้น
subject_type ต้องตั้งค่านี้เป็น oauth_token
token_type นี่คือประเภทของโทเค็นที่จะถูกเพิกถอน ไม่ว่าจะเป็น access_token หรือ refresh_token
token_identifier_alg นี่คืออัลกอริทึมที่ใช้เพื่อเข้ารหัสโทเค็น และต้องเป็น hash_SHA512_double
token นี่คือรหัสของโทเค็นที่เพิกถอน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทและรูปแบบของช่อง โปรดดูที่ JSON Web Token (JWT)