ใช้ IDP ภายนอกกับ Edge Management API

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

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

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

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

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

รับและรีเฟรชโทเค็นด้วย get_token

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

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

วิธีรับโทเค็นเพื่อการเข้าถึง 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 ของเครื่องที่โฮสต์โมดูล Apigee SSO หากคุณกำหนดค่า TLS ใน Apigee SSO ให้ใช้ https และหมายเลขพอร์ต TLS ที่ถูกต้อง

  2. แตกไฟล์แพ็กเกจ ssocli-bundle.zip ดังตัวอย่างต่อไปนี้
    unzip ssocli-bundle.zip
  3. ติดตั้ง get_token ใน /usr/local/bin ดังตัวอย่างต่อไปนี้
    ./install -b path

    ตัวเลือก -b จะระบุตำแหน่งอื่น

  4. ตั้งค่าตัวแปรสภาพแวดล้อม SSO_LOGIN_URL เป็น URL สำหรับเข้าสู่ระบบในรูปแบบต่อไปนี้
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

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

  5. (SAML เท่านั้น) ในเบราว์เซอร์ ให้ไปที่ URL ต่อไปนี้เพื่อรับรหัสผ่านแบบใช้งานครั้งเดียว
    http://edge_sso_IP_DNS:9099/passcode

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

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

    โปรดทราบว่าคุณจะใช้รหัสผ่านได้เฉพาะเมื่อตรวจสอบสิทธิ์ด้วย SAML IDP เท่านั้น คุณไม่สามารถใช้รหัสผ่านเพื่อตรวจสอบสิทธิ์กับ IDP ของ LDAP

  6. เรียกใช้ get_token เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth2 ดังตัวอย่างต่อไปนี้
    get_token -u emailAddress

    โดย emailAddress คืออีเมลของผู้ใช้ Edge

    (SAML เท่านั้น) ป้อนรหัสผ่านในบรรทัดคำสั่งนอกเหนือจากอีเมล ดังตัวอย่างต่อไปนี้

    get_token -u emailAddress -p passcode

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

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

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

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

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

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

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

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

รับโทเค็นเพื่อการเข้าถึง

(LDAP) ใช้การเรียก 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'

(SAML) ใช้การเรียก 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'

โปรดทราบว่าการตรวจสอบสิทธิ์ด้วย IDP ของ SAML ต้องใช้รหัสผ่านชั่วคราว แต่ IDP ของ LDAP ไม่ต้องใช้

รีเฟรชโทเค็นเพื่อการเข้าถึง

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

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'