รักษาความปลอดภัย API ด้วย OAuth

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

สิ่งที่คุณจะได้เรียนรู้

  • ดาวน์โหลดและทำให้พร็อกซี API ตัวอย่างใช้งานได้
  • สร้างพร็อกซี API ที่ป้องกันด้วย OAuth
  • สร้างผลิตภัณฑ์ นักพัฒนาซอฟต์แวร์ และแอป
  • ข้อมูลเข้าสู่ระบบของ Exchange สำหรับโทเค็นเพื่อการเข้าถึง OAuth
  • เรียกใช้ API ด้วยโทเค็นเพื่อการเข้าถึง

บทแนะนำนี้จะแสดงวิธีรักษาความปลอดภัยของ API ด้วย OAuth 2.0

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

เมื่อใช้ OAuth ข้อมูลเข้าสู่ระบบความปลอดภัย (เช่น ชื่อผู้ใช้/รหัสผ่าน หรือคีย์/ข้อมูลลับ) จะแลกเปลี่ยนเป็นโทเค็นเพื่อการเข้าถึง เช่น

joe:joes_password (username:password) หรือ
Nf2moHOASMJeUmXVdDhlMbPaXm2U7eMc:unUOXYpPe74ZfLEb (key:secret)

ได้กลายเป็น

b0uiYwjRZLEo4lEu7ky2GGxHkanN

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

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

ประเภทการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ใน Edge มีการใช้งานโดยใช้นโยบายในพร็อกซี API ขั้นตอน OAuth โดยทั่วไปจะมี 2 ขั้นตอนดังนี้

  • เรียกใช้พร็อกซี API 1 เพื่อสร้างโทเค็นเพื่อการเข้าถึง OAuth จากข้อมูลเข้าสู่ระบบของไคลเอ็นต์ นโยบาย OAuth เวอร์ชัน 2.0 ในพร็อกซี API จะจัดการเรื่องนี้
  • เรียกพร็อกซี API 2 เพื่อส่งโทเค็นเพื่อการเข้าถึง OAuth ในการเรียก API พร็อกซี API จะยืนยันโทเค็นเพื่อการเข้าถึงโดยใช้นโยบาย OAuth v2.0

สิ่งที่ต้องมี

  • บัญชี Apigee Edge หากยังไม่มี คุณลงชื่อสมัครใช้ได้โดยใช้คำแนะนำที่การสร้างบัญชี Apigee Edge
  • cURL ที่ติดตั้งในเครื่องเพื่อเรียก API จากบรรทัดคำสั่ง

ดาวน์โหลดและทำให้พร็อกซี API ที่สร้างโทเค็นใช้งานได้

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

  1. ดาวน์โหลดไฟล์ ZIP ตัวอย่าง API ของ "oauth" ไปยังไดเรกทอรีใดก็ได้ในระบบไฟล์
  2. ไปที่ https://apigee.com/edge และลงชื่อเข้าใช้
  3. เลือกพัฒนา > พร็อกซี API ในแถบนำทางด้านซ้าย
  4. คลิก + พร็อกซี
    ปุ่มสร้างพร็อกซี
  5. ในวิซาร์ดสร้างพร็อกซี ให้คลิกอัปโหลดกลุ่มพร็อกซี
  6. เลือกไฟล์ oauth.zip ที่คุณดาวน์โหลดไว้ แล้วคลิกถัดไป
  7. คลิกสร้าง
  8. หลังจากบิลด์เสร็จสมบูรณ์ ให้คลิกแก้ไขพร็อกซีเพื่อดูพร็อกซีใหม่ในตัวแก้ไขพร็อกซี API
  9. ในหน้าภาพรวมของตัวแก้ไขพร็อกซี API ให้คลิกเมนูแบบเลื่อนลงการทำให้ใช้งานได้ แล้วเลือกทดสอบ นี่คือสภาพแวดล้อมการทดสอบในองค์กรของคุณ

    ที่ข้อความแจ้งให้ยืนยัน ให้คลิกติดตั้งใช้งาน
    เมื่อคลิกเมนูแบบเลื่อนลง "การทำให้ใช้งานได้" อีกครั้ง ไอคอนสีเขียวจะระบุว่าระบบทำให้พร็อกซีใช้งานได้กับสภาพแวดล้อมการทดสอบแล้ว

เยี่ยมไปเลย คุณดาวน์โหลดและทำให้พร็อกซี API สร้างโทเค็นเพื่อการเข้าถึงใช้งานได้ในองค์กร Edge เรียบร้อยแล้ว

ดูขั้นตอนและนโยบาย OAuth

มาดูรายละเอียดว่าพร็อกซี API ประกอบด้วยอะไรบ้าง

  1. คลิกแท็บพัฒนาในเครื่องมือแก้ไขพร็อกซี API คุณจะเห็น 2 นโยบายในแผง Navigator ด้านซ้าย นอกจากนี้คุณจะเห็นขั้นตอน POST 2 ขั้นตอนในส่วน Proxy Endpoints ด้วย
  2. คลิก AccessTokenClientCredential ภายใต้ Proxy Endpoints

    ในมุมมองโค้ด XML คุณจะเห็น Flow ชื่อ AccessTokenClientCredential:

    <Flow name="AccessTokenClientCredential">
        <Description/>
        <Request>
            <Step>
                <Name>GenerateAccessTokenClient</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition>
    </Flow>
    

    โฟลว์คือขั้นตอนการประมวลผลในพร็อกซี API ในกรณีนี้ ระบบจะทริกเกอร์โฟลว์เมื่อเป็นไปตามเงื่อนไขบางอย่าง (เรียกว่าขั้นตอนตามเงื่อนไข) เงื่อนไขที่กำหนดไว้ในองค์ประกอบ <Condition> ระบุว่าหากมีการเรียกพร็อกซี API ไปยังทรัพยากร /accesstoken และกริยาคำขอคือ POST ให้เรียกใช้นโยบาย GenerateAccessTokenClient ซึ่งจะสร้างโทเค็นเพื่อการเข้าถึง

  3. คราวนี้มาดูที่นโยบายซึ่งโฟลว์แบบมีเงื่อนไขจะเรียกให้แสดง คลิกไอคอนนโยบาย GenerateAccessTokenClient ในแผนภาพโฟลว์

    ระบบจะโหลดการกำหนดค่า XML ต่อไปนี้ลงในมุมมองโค้ด

    <OAuthV2 name="GenerateAccessTokenClient">
        <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type -->
        <Operation>GenerateAccessToken</Operation>
        <!-- This is in millseconds, so expire in an hour -->
        <ExpiresIn>3600000</ExpiresIn>
        <SupportedGrantTypes>
            <!-- This part is very important: most real OAuth 2.0 apps will want to use other
             grant types. In this case it is important to NOT include the "client_credentials"
             type because it allows a client to get access to a token with no user authentication -->
            <GrantType>client_credentials</GrantType>
        </SupportedGrantTypes>
        <GrantType>request.queryparam.grant_type</GrantType>
        <GenerateResponse/>
    </OAuthV2>
    

    การกำหนดค่าประกอบด้วยรายการต่อไปนี้

    • <Operation> ซึ่งอาจเป็นค่าใดค่าหนึ่งที่กำหนดไว้ล่วงหน้า เป็นตัวกำหนดว่านโยบายจะทำอะไร ในกรณีนี้ จะมีการสร้างโทเค็นเพื่อการเข้าถึง
    • โทเค็นนี้จะหมดอายุใน 1 ชั่วโมง (360,000 มิลลิวินาที) หลังจากที่สร้างขึ้น
    • ใน <SupportedGrantTypes> OAuth <GrantType> ที่คาดว่าจะใช้คือ client_credentials (การแลกเปลี่ยนคีย์และข้อมูลลับของผู้ใช้สำหรับโทเค็น OAuth)
    • องค์ประกอบ <GrantType> ที่ 2 บอกนโยบายว่าจะดูที่ใดในการเรียก API สำหรับพารามิเตอร์ประเภทการให้สิทธิ์ ตามที่ข้อกำหนด OAuth 2.0 กำหนด (คุณจะเห็นสิ่งนี้ในการเรียก API ในภายหลัง) ส่งประเภทการให้สิทธิ์ในส่วนหัว HTTP (request.header.grant_type) หรือส่งเป็นพารามิเตอร์ของแบบฟอร์ม (request.formparam.grant_type) ได้ด้วย

คุณไม่จำเป็นต้องดำเนินการใดๆ กับพร็อกซี API ในขณะนี้ ในขั้นตอนถัดไป คุณจะใช้พร็อกซี API นี้เพื่อสร้างโทเค็นเพื่อการเข้าถึง OAuth แต่ก่อนอื่นคุณต้องทำบางสิ่งเพิ่มเติม

  • สร้างพร็อกซี API ที่คุณต้องการรักษาความปลอดภัยด้วย OAuth
  • สร้างอาร์ติแฟกต์อีก 2-3 รายการซึ่งจะส่งผลให้มีคีย์ผู้ใช้และข้อมูลลับของผู้ใช้ที่คุณต้องแลกเปลี่ยนกับโทเค็นเพื่อการเข้าถึง

สร้างพร็อกซี API ที่ป้องกันด้วย OAuth

เกี่ยวกับ "mocktarget"

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

http://mocktarget.apigee.net/ip

เป้าหมายจะแสดงสิ่งที่คุณควรเห็นเมื่อเรียกใช้พร็อกซี API นี้ในที่สุด

หรือจะกด http://mocktarget.apigee.net/help เพื่อดูทรัพยากรอื่นๆ ของ API ที่มีอยู่ใน mocktarget ก็ได้

คุณกำลังจะสร้างพร็อกซี API ที่ต้องการปกป้อง นี่คือการเรียก API ที่ส่งคืนสิ่งที่คุณต้องการ ในกรณีนี้ พร็อกซี API จะเรียกบริการ mocktarget ของ Apigee เพื่อแสดงผลที่อยู่ IP ของคุณ แต่คุณจะเห็นรายการนี้ได้ต่อเมื่อคุณส่งโทเค็นเพื่อการเข้าถึง OAuth ที่ถูกต้องพร้อมกับการเรียก API

พร็อกซี API ที่คุณสร้างที่นี่จะมีนโยบายที่ตรวจสอบโทเค็น OAuth ในคำขอ

  1. เลือกพัฒนา > พร็อกซี API ในแถบนำทางด้านซ้าย
  2. คลิก + พร็อกซี
    ปุ่มสร้างพร็อกซี
  3. ในวิซาร์ด Build a Proxy ให้เลือก Reverseที่ให้ไว้ (ส่วนใหญ่) แล้วคลิก Next
  4. กำหนดค่าพร็อกซีด้วยข้อมูลต่อไปนี้
    ในช่องนี้ สิ่งที่ต้องทำ
    ชื่อพร็อกซี ป้อน: helloworld_oauth2
    เส้นทางฐานโปรเจ็กต์

    เปลี่ยนเป็น: /hellooauth2

    เส้นทางหลักของโปรเจ็กต์เป็นส่วนหนึ่งของ URL ที่ใช้ในการส่งคำขอไปยังพร็อกซี API

    API ที่มีอยู่

    ป้อน: https://mocktarget.apigee.net/ip

    แอตทริบิวต์นี้กำหนด URL เป้าหมายที่ Apigee Edge เรียกใช้ในคำขอที่ส่งไปยังพร็อกซี API

    คำอธิบาย ป้อน: hello world protected by OAuth
  5. คลิกถัดไป
  6. ในหน้านโยบายทั่วไป ให้ทำดังนี้
    ในช่องนี้ สิ่งที่ต้องทำ
    ความปลอดภัย: การให้สิทธิ์ เลือก OAuth 2.0
  7. คลิกถัดไป
  8. ในหน้า Virtual Hosts ให้คลิก Next
  9. ในหน้า Build ให้ตรวจสอบว่าได้เลือกสภาพแวดล้อม test แล้ว จากนั้นคลิก Create and Deploy
  10. ในหน้าสรุป คุณจะเห็นการรับทราบว่าสร้างพร็อกซี API ใหม่เรียบร้อยแล้ว และทำให้พร็อกซี API ใช้งานได้กับสภาพแวดล้อมการทดสอบ
  11. คลิกแก้ไขพร็อกซีเพื่อแสดงหน้าภาพรวมสำหรับพร็อกซี API
    โปรดทราบว่าในตอนนี้ระบบจะทำให้พร็อกซี API ใช้งานได้โดยอัตโนมัติ คลิกเมนูแบบเลื่อนลง "การทำให้ใช้งานได้" เพื่อให้แน่ใจว่ามีจุดการทำให้ใช้งานได้สีเขียวข้างสภาพแวดล้อม "ทดสอบ"

ดูนโยบาย

มาดูรายละเอียดเกี่ยวกับสิ่งที่คุณสร้างกัน

  1. คลิกแท็บพัฒนาในเครื่องมือแก้ไขพร็อกซี API คุณจะเห็นว่ามีการเพิ่มนโยบาย 2 รายการลงในโฟลว์คำขอของพร็อกซี API ดังนี้
    • ยืนยันโทเค็นเพื่อการเข้าถึง OAuth v2.0 – ตรวจสอบการเรียก API เพื่อให้แน่ใจว่ามีโทเค็น OAuth ที่ถูกต้อง
    • นำการให้สิทธิ์ส่วนหัวออก - นโยบาย AssignMessage ที่นำโทเค็นเพื่อการเข้าถึงออกหลังจากเลือกไว้ เพื่อไม่ให้มีการส่งโทเค็นนั้นไปยังบริการเป้าหมาย (หากบริการเป้าหมายจำเป็นต้องใช้โทเค็นเพื่อการเข้าถึง OAuth คุณก็ไม่ต้องใช้นโยบายนี้)
  2. คลิกไอคอนยืนยันโทเค็นการเข้าถึง OAuth v2.0 ในมุมมองโฟลว์และดู XML ด้านล่างในแผงโค้ด

    <OAuthV2 async="false" continueOnError="false" enabled="true" name="verify-oauth-v2-access-token">
        <DisplayName>Verify OAuth v2.0 Access Token</DisplayName>
        <Operation>VerifyAccessToken</Operation>
    </OAuthV2>
    

    โปรดสังเกตว่า <Operation> มีค่าเป็น VerifyAccessToken การดำเนินการจะกำหนดสิ่งที่นโยบายควรทำ โดยในกรณีนี้เป็นการตรวจสอบโทเค็น OAuth ที่ถูกต้องในคำขอ

เพิ่มผลิตภัณฑ์ API

วิธีเพิ่มผลิตภัณฑ์ API โดยใช้ Apigee UI

  1. เลือกเผยแพร่ > ผลิตภัณฑ์ API
  2. คลิก +ผลิตภัณฑ์ API
  3. ป้อนรายละเอียดผลิตภัณฑ์สำหรับผลิตภัณฑ์ API ของคุณ
    ฟิลด์ คำอธิบาย
    ชื่อ ชื่อภายในของผลิตภัณฑ์ API อย่าใส่สัญลักษณ์พิเศษในชื่อ
    หมายเหตุ: คุณจะแก้ไขชื่อไม่ได้เมื่อสร้างผลิตภัณฑ์ API แล้ว เช่น helloworld_oauth2-Product
    ชื่อที่แสดง ชื่อที่แสดงสำหรับผลิตภัณฑ์ API ระบบจะใช้ชื่อที่แสดงใน UI ซึ่งคุณแก้ไขได้ทุกเมื่อ หากไม่ได้ระบุไว้ ระบบจะใช้ค่า "ชื่อ" ระบบจะเติมข้อมูลในช่องนี้โดยอัตโนมัติโดยใช้ค่า "ชื่อ" ซึ่งคุณจะแก้ไขหรือลบเนื้อหาได้ ชื่อที่แสดงมีสัญลักษณ์พิเศษได้ เช่น helloworld_oauth2-Product
    คำอธิบาย คำอธิบายของผลิตภัณฑ์ API
    สภาพแวดล้อม สภาพแวดล้อมที่ผลิตภัณฑ์ API จะอนุญาตการเข้าถึง เลือกสภาพแวดล้อมที่คุณทำให้พร็อกซี API ใช้งานได้ เช่น test
    การเข้าถึง เลือกสาธารณะ
    อนุมัติคำขอสิทธิ์เข้าถึงโดยอัตโนมัติ เปิดใช้การอนุมัติอัตโนมัติสำหรับคำขอคีย์สำหรับผลิตภัณฑ์ API นี้จากแอปใดก็ได้
    โควต้า ไม่สนใจสำหรับบทแนะนำนี้
    ขอบเขต OAuth ที่อนุญาต ไม่สนใจสำหรับบทแนะนำนี้
  4. ในช่องพร็อกซี API ให้เลือกพร็อกซี API ที่เพิ่งสร้าง
  5. ในช่องเส้นทาง ให้ป้อน "/" ไม่ต้องสนใจช่องอื่นๆ
  6. คลิกบันทึก

เพิ่มนักพัฒนาแอปและแอปไปยังองค์กร

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

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

สร้างนักพัฒนาซอฟต์แวร์

มาสร้างนักพัฒนาซอฟต์แวร์ชื่อ Nigel Tufnel กัน

  1. เลือกเผยแพร่ > นักพัฒนาซอฟต์แวร์ในเมนู
  2. คลิก + นักพัฒนาซอฟต์แวร์
  3. ป้อนข้อมูลต่อไปนี้ในหน้าต่างนักพัฒนาซอฟต์แวร์ใหม่
    ในช่องนี้ Enter
    ชื่อ Nigel
    นามสกุล Tufnel
    ชื่อผู้ใช้ nigel
    อีเมล nigel@example.com
  4. คลิกสร้าง

ลงทะเบียนแอป

มาสร้างแอปให้ไนเจลกัน

  1. เลือกเผยแพร่ > แอป
  2. คลิก + แอป
  3. ป้อนข้อมูลต่อไปนี้ในหน้าต่าง New App
    ในช่องนี้ สิ่งที่ต้องทำ
    ชื่อและชื่อที่แสดง ป้อน: nigel_app
    นักพัฒนาซอฟต์แวร์ คลิกนักพัฒนาซอฟต์แวร์ แล้วเลือก Nigel Tufnel (nigel@example.com)
    URL เรียกกลับและหมายเหตุ เว้นว่างไว้
  4. ใต้ผลิตภัณฑ์ ให้คลิกเพิ่มผลิตภัณฑ์
  5. เลือก helloworld_oauth2-Product
  6. คลิกสร้าง

รับคีย์ผู้ใช้และข้อมูลลับของผู้ใช้

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

  1. ตรวจสอบว่าหน้า nigel_app ปรากฏอยู่ หากไม่เห็น ให้คลิก nigel_app ในหน้าแอป (เผยแพร่ > แอป)
  2. ในหน้า nigel_app ให้คลิก Show ในคอลัมน์ Key และ Secret โปรดสังเกตว่าคีย์/ข้อมูลลับนั้นเชื่อมโยงกับ "helloworld_oauth2-Product" ที่สร้างขึ้นโดยอัตโนมัติก่อนหน้านี้

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

ลองเรียกใช้ API เพื่อรับที่อยู่ IP (ไม่สำเร็จ!)

เพื่อเป็นการเริ่มต้น ให้ลองเรียกใช้พร็อกซี API ที่มีการป้องกันซึ่งควรส่งคืนที่อยู่ IP ของคุณ เรียกใช้คำสั่ง cURL ต่อไปนี้ในหน้าต่างเทอร์มินัล แทนชื่อองค์กร Edge คำว่า test ใน URL คือสภาพแวดล้อมการทดสอบขององค์กร ซึ่งเป็นสภาพแวดล้อมที่คุณทำให้พร็อกซีใช้งานได้ เส้นทางฐานของพร็อกซีคือ /hellooauth2 ซึ่งเป็นเส้นทางฐานเดียวกันกับที่คุณระบุเมื่อสร้างพร็อกซี โปรดทราบว่าคุณไม่ได้ผ่านโทเค็นเพื่อการเข้าถึง OAuth ในการโทร

curl https://ORG_NAME-test.apigee.net/hellooauth2

เนื่องจากพร็อกซี API มีนโยบายยืนยันโทเค็นเพื่อการเข้าถึง OAuth v2.0 เพื่อตรวจสอบโทเค็น OAuth ที่ถูกต้องในคำขอ การเรียกควรล้มเหลวโดยมีข้อความต่อไปนี้

{"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}

ในกรณีนี้ ความล้มเหลวก็เป็นสิ่งที่ดี! ซึ่งหมายความว่าพร็อกซี API ของคุณมีความปลอดภัยมากขึ้น เฉพาะแอปที่เชื่อถือได้ซึ่งมีโทเค็นเพื่อการเข้าถึง OAuth ที่ถูกต้องเท่านั้นที่จะเรียกใช้ API นี้ได้

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

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

ใช้คีย์และข้อมูลลับนั้น เรียก cURL ต่อไปนี้ (โปรดทราบว่าโปรโตคอลคือ https) แทนที่ชื่อองค์กร Edge, คีย์ และข้อมูลลับของคุณตามที่ระบุ

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
"https://ORG_NAME-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials" \
-d "client_id=CLIENT_KEY&client_secret=CLIENT_SECRET"

โปรดทราบว่าหากคุณใช้ไคลเอ็นต์ เช่น Postman ในการโทร client_id และ client_secret จะอยู่ในเนื้อหาของคำขอ และต้องเป็น x-www-form-urlencoded

คุณควรได้รับการตอบกลับดังนี้

{
  "issued_at" : "1466025769306",
  "application_name" : "716bbe61-f14a-4d85-9b56-a62ff8e0d347",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[helloworld_oauth2-Product]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "nigel@example.com",
  "token_type" : "BearerToken",
  "client_id" : "xNnREu1DNGfiwzQZ5HUN8IAUwZSW1GZW",
  "access_token" : "GTPY9VUHCqKVMRB0cHxnmAp0RXc0",
  "organization_name" : "myOrg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

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

เกิดอะไรขึ้น

จำได้ไหมว่าก่อนหน้านี้เมื่อคุณดูโฟลว์เงื่อนไขดังกล่าวในพร็อกซี oauth รายการที่บอกว่า URI ทรัพยากรคือ /accesstoken และคำกริยาคำขอคือ POST เพื่อเรียกใช้นโยบาย OAuth ของ GenerateAccessTokenClient ที่สร้างโทเค็นการเข้าถึง คำสั่ง cURL เป็นไปตามเงื่อนไขเหล่านั้น ระบบจึงดำเนินการนโยบาย OAuth ซึ่งได้ยืนยันรหัสผู้ใช้และข้อมูลลับของผู้ใช้และแลกเปลี่ยนกับโทเค็น OAuth ที่จะหมดอายุภายใน 1 ชั่วโมง

เรียกใช้ API ด้วยโทเค็นเพื่อการเข้าถึง (สำเร็จ!)

เมื่อคุณมีโทเค็นเพื่อการเข้าถึงแล้ว คุณสามารถใช้โทเค็นดังกล่าวเพื่อเรียกใช้พร็อกซี API ได้ เรียก cURL ต่อไปนี้ แทนที่ชื่อองค์กร Edge และโทเค็นเพื่อการเข้าถึง

curl https://ORG_NAME-test.apigee.net/hellooauth2 -H "Authorization: Bearer TOKEN"

คุณควรได้รับการเรียกไปยังพร็อกซี API ที่แสดงที่อยู่ IP ของคุณได้สำเร็จ เช่น

{"ip":"::ffff:192.168.14.136"}

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

ยินดีด้วย คุณได้สร้างพร็อกซี API และปกป้องพร็อกซีโดยกำหนดให้ต้องมีโทเค็นเพื่อการเข้าถึง OAuth ที่ถูกต้องในการโทร

หัวข้อที่เกี่ยวข้อง