กำหนดค่าการลงชื่อเข้าระบบครั้งเดียวด้วยตัวให้บริการ OAuth ทั่วไป

Copilot Studio รองรับการเข้าสู่ระบบครั้งเดียว (SSO) กับผู้ให้บริการตรวจสอบสิทธิ์ที่เข้ากันได้กับ OAuth 2.0 SSO อนุญาตให้เอเจนต์ในเว็บไซต์ลงชื่อเข้าใช้ลูกค้าได้หากพวกเขาเข้าสู่ระบบหน้าเว็บหรือแอปที่มีการปรับใช้เอเจนต์

ข้อกำหนดเบื้องต้น

สร้างหรือใช้พื้นที่ทำงานแบบกำหนดเองที่รองรับโฟลว์ SSO ของตัวให้บริการ OAuth ทั่วไป

เมื่อหัวข้อการยืนยันตัวตนถูกเรียกใช้งานในเอเจนต์ที่เชื่อมต่อกับผู้ให้บริการ OAuth 2.0 แบบทั่วไป Copilot Studio จะส่งข้อความที่มี URL ที่ปลอดภัย ซึ่งใช้สำหรับส่งโทเค็นการเข้าถึงของผู้ใช้

พื้นที่ทำงานที่กำหนดเองหรือหน้าที่ฝังพื้นที่ทำงานควรใช้รูปแบบต่อไปนี้:

  1. รับโทเค็นการเข้าใช้สำหรับผู้ใช้ที่ลงชื่อเข้าใช้จากตัวให้บริการรับรองความถูกต้อง OAuth 2.0 โดยใช้วิธีที่คุณต้องการ

  2. ดักจับข้อความขาเข้าจาก Copilot Studio และนำ URL ที่ปลอดภัยออกมา

  3. โพสต์โทเค็นการเข้าใช้ไปยัง URL ที่ปลอดภัย

แยก URL ที่ปลอดภัยและโพสต์โทเค็น

พื้นที่ทำงานแบบกำหนดเองจะสกัดข้อความขาเข้าด้วยแนวคิดมิดเดิลแวร์ ซึ่งเป็นโค้ดที่ทำงานในบริบทของการรับข้อความจาก Copilot Studio

หากต้องการตอบกลับคำขอลงชื่อเข้าใช้ พื้นที่ทำงานที่กำหนดเองจะต้องสกัดกั้นข้อความพร้อมไฟล์แนบที่มีชนิดเนื้อหา application/vnd.microsoft.card.oauth ไฟล์แนบ OAuthCard ประกอบด้วยคุณสมบัติ content.tokenPostResource.sasUrl ซึ่งสามารถดึง URL ที่ปลอดภัยออกมาได้ สุดท้ายนี้ พื้นที่ทำงานที่กำหนดเองควรโพสต์โทเค็นการเข้าใช้ของผู้ใช้ไปยัง URL ที่ปลอดภัย

โค้ด JavaScript ต่อไปนี้เป็นตัวอย่างของโค้ดมิดเดิลแวร์ที่แยก URL ที่ปลอดภัยและโพสต์โทเค็น หากโพสต์สำเร็จ มิดเดิลแวร์จะส่งกลับ false หากโพสต์ไม่สำเร็จ หรือหากกิจกรรมไม่มีคุณสมบัติ application/vnd.microsoft.card.oauth จะมีการส่งคืน next(…args)

const activityMiddleware = () => next => (...args) => {
  if (args[0].activity.attachments?.[0]?.contentType === 'application/vnd.microsoft.card.oauth') {
    var postEndpoint = args[0].activity.attachments?.[0].content.tokenPostResource.sasUrl;

    // Perform an HTTP POST to the secure URL with the body of:
    // {
    //     "token": <user_token> 
    // } 

    if(success)
       return false;
    else
       return next(...args);
  } else {
    return next(...args);
  }
};

โค้ดตัวอย่างแบบเต็ม

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

การใช้โทเค็นใน Copilot Studio

โทเค็นที่โพสต์โดยใช้ URL ที่ปลอดภัยจะถูกจัดเก็บไว้ในตัวแปร System.User.AccessToken ใน Copilot Studio ผู้สร้างเอเจนต์สามารถใช้ตัวแปรระบบนี้เพื่อเข้าถึง API ที่ได้รับการป้องกันซึ่งเชื่อมต่อกับผู้ให้บริการที่ได้รับการรับรองความถูกต้องที่สร้างโทเค็น

ในตัวอย่างต่อไปนี้ การเรียก HTTP ได้รับการกำหนดค่าด้วยส่วนหัวของข้อมูลรับรองความถูกต้องที่ใช้ System.User.AccessToken

ภาพหน้าจอแสดงการเรียก HTTP ที่เข้าถึง API ที่ปลอดภัย

ช่องทางที่รองรับ

SSO ที่มีตัวให้บริการรับรองความถูกต้อง OAuth ทั่วไปคือรูปแบบที่กำหนดเอง ซึ่งสามารถนำมาใช้โดยพื้นที่ทำงานที่กำหนดเองหรือไคลเอ็นต์อื่นๆ ที่ทำงานกับ Directline API