การใช้ SAML กับ Edge Management API

Edge for Private Cloud v4.19.01

การตรวจสอบสิทธิ์พื้นฐานเป็นวิธีหนึ่งในการตรวจสอบสิทธิ์เมื่อทำการเรียกไปยัง Edge Management API เช่น คุณสามารถส่งคำขอ cURL ต่อไปนี้ไปยัง Edge Management API เพื่อเข้าถึงข้อมูลเกี่ยวกับองค์กรของคุณได้

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

ในตัวอย่างนี้ คุณใช้ตัวเลือก cURL -u เพื่อส่งข้อมูลเข้าสู่ระบบ Basic Auth หรือจะส่งโทเค็น OAuth2 ในส่วนหัว Bearer เพื่อเรียกใช้ Edge Management API ก็ได้ เช่น

curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName

หลังจากเปิดใช้ SAML แล้ว คุณจะปิดใช้การตรวจสอบสิทธิ์พื้นฐานได้ (ไม่บังคับ) หากปิดใช้การตรวจสอบสิทธิ์พื้นฐาน สคริปต์ทั้งหมด (สคริปต์ Maven, สคริปต์ของ Shell, apigeetool ฯลฯ) ที่อาศัยการเรียก Management API ของ Edge ที่รองรับการตรวจสอบสิทธิ์พื้นฐานจะใช้งานไม่ได้อีกต่อไป คุณต้องอัปเดตการเรียก API และสคริปต์ที่ใช้การตรวจสอบสิทธิ์พื้นฐานเพื่อส่งโทเค็นเพื่อการเข้าถึง OAuth2 ในส่วนหัว Bearer

การใช้ get_token เพื่อรับและรีเฟรชโทเค็น

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

ยูทิลิตี get_token จะจัดเก็บโทเค็นไว้ในดิสก์ พร้อมใช้งานเมื่อจำเป็น และยังพิมพ์โทเค็นเพื่อการเข้าถึงที่ถูกต้องไปยัง stdout ด้วย จากนั้นคุณจะใช้ Postman หรือฝังไว้ในตัวแปรสภาพแวดล้อมเพื่อใช้ใน curl ได้

ขั้นตอนต่อไปนี้อธิบายวิธีใช้ get_token เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth2 เพื่อเรียกใช้ Edge Management API

  1. ดาวน์โหลดแพ็กเกจ sso-cli
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    โดยที่ edge_sso_IP_DNS คือที่อยู่ IP ของชื่อ DNS ของเครื่องที่โฮสต์โมดูล Edge SSO หากคุณกำหนดค่า TLS ใน Edge SSO ให้ใช้ https และหมายเลขพอร์ต TLS ที่ถูกต้อง

  2. แตกไฟล์แพ็กเกจ ssocli-bundle.zip โดยทำดังนี้
    unzip ssocli-bundle.zip
  3. ติดตั้ง get_token ใน /usr/local/bin:
    > ./install ใช้ตัวเลือก -b เพื่อระบุตำแหน่งอื่น: > ./install -b path
  4. ตั้งค่าตัวแปรสภาพแวดล้อม SSO_LOGIN_URL เป็น URL สำหรับเข้าสู่ระบบในรูปแบบต่อไปนี้
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    โดยที่ edge_sso_IP_DNS คือที่อยู่ IP ของชื่อ DNS ของเครื่องที่โฮสต์โมดูล Edge SSO หากคุณกำหนดค่า TLS ใน Edge SSO ให้ใช้ https และหมายเลขพอร์ต TLS ที่ถูกต้อง
  5. ในเบราว์เซอร์ ให้ไปที่ URL ต่อไปนี้เพื่อรับรหัสผ่านแบบใช้งานครั้งเดียว
    http://edge_sso_IP_DNS:9099/passcode

    หากคุณกำหนดค่า TLS ใน Edge SSO ให้ใช้ https และหมายเลขพอร์ต TLS ที่ถูกต้อง

    หมายเหตุ: หากคุณไม่ได้เข้าสู่ระบบโดยผู้ให้บริการข้อมูลประจำตัว ระบบจะแจ้งให้คุณเข้าสู่ระบบ

    URL นี้จะแสดงรหัสผ่านแบบใช้งานครั้งเดียวซึ่งจะยังคงใช้ได้จนกว่าคุณจะรีเฟรช URL นั้นเพื่อรับรหัสผ่านใหม่ หรือใช้รหัสผ่านกับ get_token เพื่อสร้างโทเค็นเพื่อการเข้าถึง
  6. เรียกใช้ get_token เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth2:
    > get_token -u emailAddress

    โดยที่ emailAddress คืออีเมลของผู้ใช้ Edge ระบบจะแจ้งให้คุณป้อนรหัสผ่านแบบใช้งานครั้งเดียวที่ได้รับในขั้นตอนที่ 3:
    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
    Enter the passcode if SAML is enabled or press ENTER:


    ป้อนรหัสผ่าน ยูทิลิตี get_token จะรับโทเค็นเพื่อการเข้าถึง OAuth2, พิมพ์ลงในหน้าจอ และเขียนโทเค็นดังกล่าวและโทเค็นการรีเฟรชลงใน ~/.sso-cli

    คุณสามารถป้อนรหัสผ่านในบรรทัดคำสั่งโดยใช้คำสั่ง get_token ในรูปแบบต่อไปนี้
    > get_token -u emailAddress -p passcode
  7. ส่งโทเค็นเพื่อการเข้าถึงไปยังการเรียก Edge Management API เป็นส่วนหัว Bearer:
    > curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName

    หลังจากได้รับโทเค็นเพื่อการเข้าถึงใหม่เป็นครั้งแรก คุณจะได้รับโทเค็นเพื่อการเข้าถึงและส่งไปยังการเรียก API ในคำสั่งเดียวได้ ดังที่แสดงด้านล่าง
    > header=`get_token` && curl -H "Authorization: Bearer $header" https://ms_IP:8080/v1/o/orgName

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

หลังจากโทเค็นการรีเฟรชหมดอายุ get_token จะแจ้งให้คุณป้อนรหัสผ่านใหม่ คุณต้องไปที่ URL ที่แสดงด้านบนในขั้นตอนที่ 3 และสร้างรหัสผ่านใหม่ก่อนจึงจะสร้างโทเค็นเพื่อการเข้าถึง OAuth ใหม่ได้

การใช้ Management API เพื่อรับและรีเฟรชโทเค็น

การใช้การรักษาความปลอดภัย OAuth2 กับ Apigee Edge Management API มีวิธีการที่แสดงวิธีใช้ Edge Management API เพื่อรับและรีเฟรชโทเค็น นอกจากนี้ คุณยังใช้การเรียก Edge API เพื่อรับโทเค็นที่สร้างจากการยืนยัน SAML ได้ด้วย

ความแตกต่างเพียงอย่างเดียวระหว่างการเรียก API ที่ระบุไว้ในการใช้การรักษาความปลอดภัย OAuth2 กับ Management API ของ Apigee Edge คือ URL ของการเรียกต้องอ้างอิงชื่อโซนของคุณ นอกจากนี้ หากต้องการสร้างโทเค็นเพื่อการเข้าถึงเริ่มต้น คุณต้องใส่รหัสผ่านตามที่แสดงในขั้นตอนที่ 3 ของขั้นตอนข้างต้น

ตัวอย่างเช่น ใช้การเรียก API ต่อไปนี้เพื่อสร้างโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชเริ่มต้น

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'  

สำหรับการให้สิทธิ์ ให้ส่งข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth2 ที่สงวนไว้ในส่วนหัว Authorization การเรียกจะพิมพ์โทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชลงในหน้าจอ

หากต้องการรีเฟรชโทเค็นเพื่อการเข้าถึงในภายหลัง ให้ใช้การเรียกต่อไปนี้ซึ่งมีโทเค็นการรีเฟรช

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
-H "Accept: application/json;charset=utf-8" /
-H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
https://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'