จะทำให้ Basic HTTP Authentication ทำงานสำหรับแอปพลิเคชัน Apigility ได้อย่างไร

ฉันตั้งค่าการตรวจสอบสิทธิ์ขั้นพื้นฐานตามที่ระบุไว้ใน เอกสาร Apigility (เอกสารไม่ใช่ ให้ทันสมัยอีกต่อไป แต่ขั้นตอนหลักยังคงเหมือนเดิม) ดังนั้นฉันจึงสร้างไฟล์ users.htpasswd และเพิ่มอะแดปเตอร์การตรวจสอบความถูกต้อง /config/autoload/local.php ของฉันได้รับการอัปเดตและได้รับการกำหนดค่าอะแดปเตอร์แล้ว:

return array(
    ...
    'zf-mvc-auth' => array(
        'authentication' => array(
            'adapters' => array(
                'dummy basic auth' => array(
                    'adapter' => 'ZF\\MvcAuth\\Authentication\\HttpAdapter',
                    'options' => array(
                        'accept_schemes' => array(
                            0 => 'basic',
                        ),
                        'realm' => 'Dummy Realm',
                        'htpasswd' => 'data/users.htpasswd',
                    ),
                ),
            ),
        ),
    ),
);

จนถึงตอนนี้ดีมาก:

Test: I sent a `GET` request got the data just like before the auth setup.
Expected: `200 OK`
Result: `200 OK`
OK

จากนั้น ฉันไปที่ Apigility Admin Backend -> My API -> My Rest Service -> Authorization และทำเครื่องหมายวิธีการและจุดสิ้นสุด ฉันต้องการขออนุมัติ

Test: I sent a new request without credentials / authentication token.
Expected: `403 Forbidden`
Result: `403 Forbidden`
OK

Test: I sent another request with wrong credentials / authentication token.
Expected: `401 Unauthorized`
Result: `403 Forbidden`
FAIL

Test: I sent a request with correct credentials / authentication token.
Expected: `200 OK`
Result: `403 Forbidden`
FAIL

ผมทำอะไรผิดหรือเปล่า? จะทำให้การตรวจสอบสิทธิ์ HTTP พื้นฐานทำงานได้อย่างไร




คำตอบ (1)


ในเวอร์ชันใหม่ของ Apigility (ไม่แน่ใจว่าอันไหน แต่มากกว่า 1.0) มีความสามารถในการสร้างอะแดปเตอร์ Auth หลายตัวและเชื่อมโยง API แต่ละตัวกับอะแดปเตอร์ Auth ที่แตกต่างกัน

หากคุณได้สร้างอะแดปเตอร์รับรองความถูกต้อง (การรับรองความถูกต้องที่ด้านบน -> อะแดปเตอร์ -> อะแดปเตอร์ใหม่) คุณจะมีชื่ออะแดปเตอร์สำหรับ HTTP Basic ที่คุณตั้งค่า จดบันทึกไว้

จากนั้นไปที่ API ของคุณ (อันที่ตรงกับชื่อของโมดูลที่มีทรัพยากรของคุณ ไม่ใช่ทรัพยากรแต่ละรายการ) บนหน้าจอดังกล่าว คุณจะเห็น "การรับรองความถูกต้อง" ที่ด้านซ้ายบนพร้อมเมนูแบบเลื่อนลง

ตัวเลือกอะแดปเตอร์รับรองความถูกต้อง

ในเมนูแบบเลื่อนลง ให้เลือกอะแดปเตอร์รับรองความถูกต้องที่คุณสร้างและบันทึกการเลือกของคุณ ทรัพยากรของคุณภายใต้ API นั้นควรตอบสนองอย่างถูกต้องโดยขึ้นอยู่กับว่าคุณได้รับการรับรองความถูกต้องหรือไม่

person David Stockton    schedule 13.05.2015