小编Eri*_*our的帖子

无服务器框架 - 将二进制文件上传到 S3 时损坏

我有一个端点,它接收包括文件在内的表单数据。该文件可以是文本文件、图像或 pdf 文件。我正在使用 Busboy (v0.2.14) 来解析表单数据。该代码如下所示:

        let buffers = [];

        file.on('data', data => buffers.push(data));

        file.on('end', () => {
            result.filename = filename;
            result.contentType = mimetype;

            // Concat the chunks into a Buffer
            result.file = new Buffer.concat(buffers);
        });
        // ...
        busboy.write(event.body, event.isBase64Encoded ? 'base64' : 'binary');
        busboy.end();
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 AWS SDK (v2.97.0) 将文件数据推送到 S3 时,当我查看它们时,所有二进制文件都已损坏。文本文件不会发生这种情况。S3上传代码如下所示:

static myPutObject(bucketName, fileName, data, contentType, acl) {
    const params = {
        Bucket: bucketName,
        Key: fileName,
        Body: data,
        ACL: acl,
        ContentType: contentType,
        ContentEncoding: 'base64'
    };

    return new AWS.S3().putObject(params).promise();
} …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 node.js busboy serverless

5
推荐指数
1
解决办法
2055
查看次数

如何在 Node.js 应用程序/API 中从 Azure AD 发出令牌?

我正在构建一个带有快速后端的节点应用程序。要求之一是使用 Azure AD 进行身份验证。我已经安装了passport-azure-ad模块并将其设置如下:

import * as passportAD from "passport-azure-ad";
// ... <snip> ....
const tenantName = "<MY_TENANT_NAME>"";
const clientID = "<MY_CLIENT_ID>";

app.use(passport.initialize());
app.use(passport.session());
const bearerStrategy = new passportAD.BearerStrategy(
  {
    identityMetadata: `https://login.microsoftonline.com/${tenantName}.onmicrosoft.com/.well-known/openid-configuration`,
    clientID
  },
  (token: any, done: any) => {
    console.log(token);
    return done(null, {}, token);
  }
);
passport.use(bearerStrategy);
Run Code Online (Sandbox Code Playgroud)

然后我为这样的路线添加了授权:

const myHandler = () => (req, res) => return res.json({});
app.get('/my/route',
        passport.authenticate("oauth-bearer", { session: false }),
        myHandler()
);
Run Code Online (Sandbox Code Playgroud)

这将按预期返回 401 状态,但是,我无法找到有关如何从 Azure AD 向客户端颁发令牌的文档。我想在正文中使用用户名和密码接受对登录端点的 POST 并返回 Azure AD 令牌。这可能吗?

node.js express azure-active-directory passport.js passport-azure-ad

0
推荐指数
1
解决办法
3065
查看次数