Bạn có thể dễ dàng đăng nhập khỉ từ SDK AWS vào SwaggerJS (và do đó SwaggerUI). Xem here
Tôi có một chút thay đổi SwaggerUI here. Với một số thông tin AWS và ID API, nó sẽ kéo xuống định nghĩa Swagger, hiển thị nó trong SwaggerUI, và sau đó bạn có thể gọi API bằng sigv4.
Việc thực hiện ủy quyền trông như thế này:
var AWSSigv4RequestSigner = function(credentialProvider, aws) {
this.name = "sigv4";
this.aws = aws;
this.credentialProvider = credentialProvider;
};
AWSSigv4RequestSigner.prototype.apply = function(options, authorizations) {
var serviceName = "execute-api";
//If we are loading the definition itself, then we need to sign for apigateway.
if (options && options.url.indexOf("apigateway") >= 0) {
serviceName = "apigateway";
}
if(serviceName == "apigateway" || (options.operation && options.operation.authorizations && options.operation.authorizations[0].sigv4))
{
/**
* All of the below is an adapter to get this thing into the right form for the AWS JS SDK Signer
*/
var parts = options.url.split('?');
var host = parts[0].substr(8, parts[0].indexOf("/", 8) - 8);
var path = parts[0].substr(parts[0].indexOf("/", 8));
var querystring = parts[1];
var now = new Date();
if (!options.headers)
{
options.headers = [];
}
options.headers.host = host;
if(serviceName == "apigateway")
{
//For the swagger endpoint, apigateway is strict about content-type
options.headers.accept = "application/json";
}
options.pathname = function() {
return path;
};
options.methodIndex = options.method;
options.search = function() {
return querystring ? querystring : "";
};
options.region = this.aws.config.region || 'us-east-1';
//AWS uses CAPS for method names, but swagger does not.
options.method = options.methodIndex.toUpperCase();
var signer = new this.aws.Signers.V4(options, serviceName);
//Actually add the Authorization header here
signer.addAuthorization(this.credentialProvider, now);
//SwaggerJS/yourbrowser complains if these are still around
delete options.search;
delete options.pathname;
delete options.headers.host;
return true;
}
return false;
};
Chúng tôi đang sử dụng API Gateway cũng như Swagger để xác định các API và tôi cũng đã cố gắng để tìm ra cách để cả hai tạo ra SDK JS sử dụng vênh vang-codegen (trông giống như giao diện điều khiển API Gateway có một tính năng hoặc mẫu tùy chỉnh bao gồm mã sigv4 trong mã templated) và sau đó nhúng nước sốt thêm sigv4 vào mã JS của tài liệu swagger, ví dụ: trên trường hợp chuyển đổi 'ApiClient.js'' applyAuthToRequest' . –
Tôi cho rằng công cụ tạo tài liệu vênh vang hoạt động theo cách tương tự để vênh vang codegen cho phép các mẫu bổ sung (tức là: ria mép) để tùy chỉnh đầu ra với các đánh dấu, tập lệnh, v.v. khác nhau? –
đoán một tùy chọn sẽ là ngã ba 'swagger-ui' (https://github.com/swagger-api/swagger-ui) và bao gồm cùng một ma thuật sigv4 ở đó? –