首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用passport azure-ad保护azure函数http触发器

使用passport azure-ad保护azure函数http触发器
EN

Stack Overflow用户
提问于 2020-09-07 02:53:12
回答 2查看 441关注 0票数 2

如何使用passportpassport-azure-ad保护azure函数我不想保护所有的azure函数,有些函数需要在运行代码之前验证access_token。我在网上找到的大多数示例都在使用express,它不能在azure函数中使用。

我尝试了下面的方法,但是代码仍然没有经过身份验证就可以运行。

代码语言:javascript
复制
const passport = require("passport");
const config = require("../shared/config");
const createMongoClient = require("../shared/mongo");
const BearerStrategy = require("passport-azure-ad").BearerStrategy;

const bearerStrategy = new BearerStrategy(config, function (token, done) {
  // Send user info using the second argument
  done(null, {}, token);
});
passport.use(bearerStrategy);
passport.initialize();

module.exports = async function (context, req) {
  passport.authenticate("oauth-bearer", { session: false });
  const dish = req.body || {};

  if (dish) {
    context.res = {
      status: 400,
      body: "Dish data is required! ",
    };
  }

  const { db, connection } = await createMongoClient();

  const Dishes = db.collection("dishes");

  try {
    const dishes = await Dishes.insertOne(dish);
    connection.close();

    context.res = {
      status: 201,
      body: dishes.ops[0],
    };
  } catch (error) {
    context.res = {
      status: 500,
      body: "Error creating a new Dish",
    };
  }
};
EN

回答 2

Stack Overflow用户

发布于 2020-09-07 16:14:55

由于Azure功能不是由您管理的(您只需提供代码),因此身份验证在另一个地方发生,并且可以通过门户进行配置。

如果只需要保护一些功能的,你最好的选择是将这些功能划分为两个不同的功能应用程序。一个会受到保护,而另一个则不会。

以下是身份验证的官方文档:https://docs.microsoft.com/en-us/azure/app-service/overview-authentication-authorization

在我看来,当使用Linux作为操作系统时没有启用身份验证,所以您的部署必须是在Windows 上,您可以使用Azure API Management

我有一个在门户中创建带身份验证的Azure函数的示例。代码本身是用.Net编写的,但是门户中的配置应该完全相同。

https://www.pshul.com/2020/02/07/azure-ad-authentication-from-angular-to-azure-functions/

票数 -1
EN

Stack Overflow用户

发布于 2020-11-12 08:55:16

也许你可以看看这个:https://www.npmjs.com/package/azure-function-express

这里还有一个完整的示例,采用了相同的方法:

https://github.com/Azure-Samples/ms-identity-nodejs-webapi-onbehalfof-azurefunctions

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63767777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档