当前位置: 首页 > 知识库问答 >
问题:

使用MSAL保护Azure函数API

贺玉石
2023-03-14

我有Azure Functions,我想使用访问令牌对其进行身份验证。

我已经安排好了以下事情

  1. Angular SPA正在使用Azure应用程序对用户进行身份验证
  2. 用于调用图形API的访问令牌,权限在Azure应用程序中设置(第1点)
  3. Azure函数具有SPA正在使用的超文本传输协议触发器(API)

目前,API是匿名的,可以从任何地方调用。我想使用图形api使用的访问令牌来保护这些api(第2点)

我认为对我来说最好的方法是AAD多租户身份验证。然而,当我点击“Authentication(classic)”时,它会告诉我该应用程序是使用新的身份验证体验配置的。单击此处访问身份验证(预览)

此外,如果我使用以下选项保持身份验证,我会得到“您没有查看此目录或页面的权限。”错误

我在网上找到的大多数文章都是关于AAD的。对我来说,该选项未启用。

我试图以下的文章,使它的工作,但不知何故,它没有发生。

https://medium.com/medialesson/protecting-azure-function-apps-with-azure-ad-authentication-authorization-fd167ce4fe33

https://medium.com/geekculture/easyauth-in-functions-app-with-azure-active-directory-29c01cad8477

在我现有的Azure应用程序中是否需要执行某些操作才能使其正常工作?

共有1个答案

夏侯和韵
2023-03-14

据我所知,您的Azure功能受AAD使用身份验证(Easy auth)的保护。现在,您的angular SPA希望访问此功能。请遵循以下步骤:

  1. 转到Azure AD=

单击“授予管理员同意”按钮以完成该过程。

不使用此访问令牌

更新

基本上,您的应用程序请求图如下所示:

SPA(带有访问令牌的请求)==

现在,我们已经完成了步骤1和2:获取easy auth的访问令牌,并将easy auth传递到Azure函数代码逻辑中。

所以在Azure函数代码逻辑中,我们需要做两件事:

  1. 获取请求标头中的访问令牌
  2. 使用访问令牌和OBO流为Microsoft Graph API交换新的访问令牌。请参阅下面的请求以使用OBO流为Microsoft Graph API交换访问令牌:在此处输入图像描述

顺便说一句,请确保您的Azure function应用程序已被授予用户权限。阅读日历。阅读:

 类似资料:
  • Azure AD B2C租户 域名:myTenantName.onmicrosoft.com 应用程序: 应用程序A-API WebApp/API:是 允许隐式流:是 回复Url:https://myazurefunsapi.azurewebsites.net/.auth/login/aad/callback 应用程序ID:https://mytenantname.onmicrosoft.com/

  • 我有几个Azure Functions,我想使用Azure AD对其应用身份验证。在用户模拟身份验证方面,我已经成功做到了这一点。但不幸的是,我无法从尝试访问Azure Functions的守护程序应用程序中获得同样的工作。 我的守护程序应用程序在Azure AD中注册,并公开应用程序范围。基本上,我有其他构建为应用程序服务的API,可以从守护程序应用程序成功地进行身份验证。我为Azure功能应用

  • 函数名称:保护模式调用 函数功能:保护执行 function 函数, function 内部发生的错误不会影响脚本运行 函数方法 bool,msg = pcall(fun,action,...) 参数 类型 必填 说明 fun function 是 待调用参数 action - 否 待传入 fun 的参数,支持多个参数 返回值 类型 说明 bool boolean true - 无错误,false

  • 如果有人能阐明如何在Azure函数中不需要具有角色的开发人员的情况下将秘密引入PROD代码,这将对我有极大的帮助。 缩略语: “sami”=系统分配的托管标识 “Ent SEC”=企业安全小组 null null

  • 我将Spring Boot 2.2.0与azure-active-directory-b2c-Spring-Boot-starter一起使用。我设法用它(按照他们的教程)获得了一个Thymeleaf网页。现在,我想要一个REST API,它以同样的方式受到保护,因为实际的应用程序将是一个移动应用程序,它对我的Spring Boot后端进行REST调用。 我已经找到了如何使用密码授权流获取令牌的方法

  • 问题内容: 如何在JavaScript中生成加密安全的随机数? 问题答案: 例如,您可以将鼠标移动用作随机数的种子,在onmousemove事件发生时读出时间和鼠标位置,将数据提供给美白功能,您将获得一些一流的随机性。尽管在使用数据之前请确保用户已充分移动鼠标。 编辑:我自己做了一个密码生成器来处理这个概念,我不能保证我的美白功能是完美的,但是不断地播种,我很确定它能胜任这一工作:ebusines