2016-09-27 2 views
1

私はSwaggerを使用してREST APIのドキュメントを作成しています。 Swagger UIは基本的な認証をサポートしていません(online editorとは異なります)。私の問題は、私のAPIの1つがダイジェスト(基本的ではない)認証を必要とするPOSTだということです。ダイジェスト認証を使用するSwagger UI

解決方法可能性のある解決方法は、固定ユーザーを追加することです:リクエストに認証コードを渡し、javascriptコードを使用します。これは、Swagger UI documentationCustom Header Parametersを参照)に従って簡単に行う必要があります。私は、有罪判決を受けたコード行を報告します:

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

残念ながらそれは動作しません。 SwaggerUiオブジェクトを初期化した後にswaggerUi.apiフィールドの結果が初期化されず(null)、結果としてswaggerUi.api.clientAuthorizationsは未定義です。私はそのようなフィールドを異なる方法で初期化しようとしましたが、毎回失敗しました。私はこのトピックについて議論しているスレッドで見つけたAPIにも同様の呼び出しを試みましたが、どれもうまくいきませんでした。誰かがそれについての考えを持っていますか?そのことに関する文書は特に明確ではない。完全のために

、私はSwaggerClient.PasswordAuthorization代わりのSwaggerClient.ApiKeyAuthorization使用してみてください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

を初期化するところ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%:realm:passを必要とする)ではなく、基本認証の問題を解決するように思われることです。 – McKracken

関連する問題