การยกเลิกการเชื่อมโยงบัญชี

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

บัญชีสามารถยกเลิกการเชื่อมโยงได้โดยสิ่งต่อไปนี้:

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

ผู้ใช้ขอยกเลิกการเชื่อมโยงจาก Google

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

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

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

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

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

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

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

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

บัญชีสามารถยกเลิกการเชื่อมโยงได้เนื่องจากสาเหตุอื่น ๆ เช่นไม่มีการใช้งานการระงับพฤติกรรมที่เป็นอันตรายและอื่น ๆ ในสถานการณ์เช่นนี้แพลตฟอร์มของคุณและ 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 Foundation

Security Event Token ใช้เพื่อแจ้ง 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 Time of Event Claim: เป็นค่า 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)