Swagger UI พร้อมการรับรองความถูกต้องแบบไดเจสต์

ฉันใช้ Swagger เพื่อสร้างเอกสารประกอบของ REST API ของฉัน ตามที่เขียนไว้ Swagger UI ไม่รองรับการตรวจสอบสิทธิ์ขั้นพื้นฐาน (แตกต่างจาก ตัวแก้ไขออนไลน์) ปัญหาของฉันคือหนึ่งใน API ของฉันคือ POST ที่ต้องมีการรับรองความถูกต้องแบบไดเจสต์ (ไม่ใช่แบบพื้นฐานด้วยซ้ำ)

วิธีแก้ปัญหาที่เป็นไปได้ที่ฉันพบคือการเพิ่มผู้ใช้คงที่: ส่วนหัวการตรวจสอบสิทธิ์ผ่านในคำขอผ่านรหัสจาวาสคริปต์ ซึ่งควรทำได้อย่างง่ายดายตามเอกสารประกอบของ Swagger UI (ดู พารามิเตอร์ส่วนหัวที่กำหนดเอง) ฉันรายงานบรรทัดรหัสที่ถูกกล่าวหา:

swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "XXXX", "header"));

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

เพื่อความสมบูรณ์ ฉันรายงานตัวอย่างข้อมูล js ที่ฉันเริ่มต้น Swagger UI

  var urlPush = "./doc_push.yaml";
  window.swaggerUiPush = new SwaggerUi({
        url: urlPush,
        dom_id: "swagger-ui-container-push",
        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
        onFailure: function(data) {
          log("Unable to Load SwaggerUI");
        },
        docExpansion: "list",
        jsonEditor: false,
        defaultModelRendering: 'model',
        showRequestHeaders: false,
   });

person McKracken    schedule 27.09.2016    source แหล่งที่มา


คำตอบ (1)


ลองใช้ SwaggerClient.PasswordAuthorization แทน SwaggerClient.ApiKeyAuthorization -

 var username = $('#input_username').val();
 var password = $('#input_password').val();
 var basicAuth = new SwaggerClient.PasswordAuthorization('basic', username, password);
 window.swaggerUi.api.clientAuthorizations.add("basicAuth", basicAuth);
person Sampada    schedule 28.09.2016
comment
แน่นอนว่าด้วยวิธีนี้จะเพิ่มส่วนหัว Authorization: Basic XXXXXXX (ระวัง เวอร์ชันใหม่ไม่ต้องการให้มีฟิลด์ 'พื้นฐาน') ปัญหาคือดูเหมือนว่าจะแก้ปัญหาการตรวจสอบสิทธิ์ขั้นพื้นฐาน ไม่ใช่ปัญหาการตรวจสอบสิทธิ์แบบแยกส่วน (ซึ่งต้องใช้ MD% ของผู้ใช้:realm:pass) - person McKracken; 28.09.2016