【问题标题】:Swagger UI with digest authentication带有摘要身份验证的 Swagger UI
【发布时间】:2016-09-27 10:53:34
【问题描述】:

我正在使用 Swagger 来生成我的 REST API 的文档。根据所写的内容,Swagger UI 不提供对基本身份验证的支持(与 online editor 不同)。我的问题是我的 API 之一是需要摘要(甚至不是基本)身份验证的 POST。

我发现的一个可能的解决方案是通过 javascript 代码在请求中添加一个固定的 user:pass authentication 标头。这应该根据Swagger UI documentation 轻松完成(请参阅Custom Header Parameters)。我举报涉案代码行:

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

不幸的是,它不起作用。在我初始化 SwaggerUi 对象后,swaggerUi.api 字段未初始化(null),因此 swaggerUi.api.clientAuthorizations 未定义。我尝试以不同的方式初始化这些字段,但每次都失败。我还尝试了对我在讨论该主题的线程中找到的 API 的类似调用,但它们都没有奏效。有人对此有想法吗?文档对此并不是特别清楚。

为了完整起见,我报告了我初始化Swagger UI的js sn-p

  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,
   });

【问题讨论】:

    标签: javascript authentication swagger swagger-ui swagger-2.0


    【解决方案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);
    

    【讨论】:

    • 当然,这样它会添加标题“授权:基本 XXXXXXX”(注意,新版本不希望出现“基本”字段)。问题是它似乎解决了 Basic Authentication 问题,而不是 Digest Authentication 问题(需要 user:realm:pass 的 MD%)。
    猜你喜欢
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多