2016-09-27 2 views
1

Swagger를 사용하여 내 REST API에 대한 문서를 생성합니다. 주위에 쓰여진 내용에 따르면 Swagger UI는 기본 인증을 지원하지 않습니다 (online editor과 다름). 내 문제는 내 API 중 하나가 다이제스트 (심지어 기본이 아님) 인증이 필요한 POST입니다.다이제스트 인증을 사용하는 사용자 인터페이스

해결 방법 가능한 해결책은 고정 된 사용자를 추가하는 것입니다. 자바 스크립트 코드를 통해 요청에 인증 헤더를 전달하십시오. 이는 Swagger UI documentation (Custom Header Parameters 참조)에 따라 쉽게 이루어져야합니다. 죄송합니다 코드 줄을보고합니다 :

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

불행히도 그것은 작동하지 않습니다. swaggerUi.api 필드는 SwaggerUi 개체를 초기화 한 후에 초기화되지 않습니다 (null). 결과적으로 swaggerUi.api.clientAuthorizations은 정의되지 않습니다. 난 필드를 초기화하는 시도가 다른 방식으로, 매번 실패합니다. 이 주제에 관해 논의한 스레드에서 발견 된 API에 대한 비슷한 호출도 시도했지만 그 중 아무 것도 작동하지 않았습니다. 누구든지 그것에 대한 아이디어가 있습니까? 그 문서는 그 점에 관해서 특히 명확하지 않습니다.

는 완성도를 위해, 나는 내가 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, 
    }); 

답변

0

SwaggerClient.PasswordAuthorization 대신 SwaggerClient.ApiKeyAuthorization 사용해보십시오 초기화 곳 JS 니펫을보고 - 그것은 헤더 "권한을 추가하는 방법으로 확인을 위해

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); 
+0

를 : 기본 XXXXXXX "(조심해, 새 버전의 '기본'필드가 존재하지 않으려는). 문제는 다이제스트 인증 문제 (사용자의 MD %가 필요 : 영역 : 패스)가 아닌 기본 인증 문제를 해결하는 것입니다. – McKracken