gpt4 book ai didi

azure - 使用 Azure 应用服务身份验证将 Azure Function 作为 Multi-Tenancy 应用程序连接到 Microsoft Graph

转载 作者:行者123 更新时间:2023-12-02 07:48:59 26 4
gpt4 key购买 nike

我花了一段时间试图弄清楚如何将 azure 函数连接到任何用户的 Office 365 图表以查询他们的收件箱,但没有成功。我需要帮助了解执行以下操作的正确方法:

当用户向 http 触发函数发出 http get 请求时,它应该:

  1. 提示用户登录其 Microsoft 工作帐户。
  2. 请求访问其收件箱的权限。
  3. 查询收件箱以获取未读消息的计数。
  4. 回复未读消息数。

这应该适用于调用该函数的任何用户,无论他们正在访问哪个 Azure Active Directory 实例。

这可能吗?

如果是这样,谁能解释一下如何配置azure功能来实现这一点?

谢谢,斯图尔特

最佳答案

我已经想出了如何做到这一点。建议的解决方案仅从 Microsoft Graph 返回用户的详细信息,而不是收件箱计数。

  1. 创建函数和应用程序。
    1. 创建一个新的 Azure Functions 应用。
    2. 添加 JavaScript Web Hook 。
  2. 创建 Microsoft 应用程序注册 here
    1. 在应用程序注册中生成新密码并保存该密码。
    2. 生成 Web 平台并将重定向网址设置为 https://.azurewebsites.net/.auth/login/aad/callback。
    3. 添加任何所需的委派权限 (Mail.Read)。
  3. 为 Azure Function 应用设置 Azure 应用服务身份验证。
    1. 为 Azure Function 应用启用身份验证(平台功能 -> 身份验证/授权)。
    2. 将“请求未经身份验证时采取的操作”设置为“使用 Azure Active Directory 登录”。
    3. 将 Active Directory 身份验证设置设为“高级”。
      1. 将客户端 ID 设置为第 3 步中创建的应用程序 ID。
      2. 将客户端 key 设置为第 4 步中生成的密码。
      3. 将颁发者网址和允许的 token 受众留空。
  4. 将 Azure 函数授权级别设置为匿名(单击“函数”->“集成”)。
  5. 将以下代码添加到您的函数中:

    var request = require('request');

    module.exports = function (context, req) {
    var parameters = {
    grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
    client_id: process.env.WEBSITE_AUTH_CLIENT_ID,
    client_secret: process.env.WEBSITE_AUTH_CLIENT_SECRET,
    assertion: req.headers['x-ms-token-aad-id-token'],
    resource: 'https://graph.microsoft.com',
    requested_token_use: 'on_behalf_of'
    };
    var tenant = req.headers['x-ms-client-principal-name'].replace(/.*@/, "");
    request.post('https://login.microsoftonline.com/'+tenant+'/oauth2/token', {form: parameters}, function (aadErr, aadResponse, aadMsg) {
    var msgJson = JSON.parse(aadMsg);
    request.get('https://graph.microsoft.com/v1.0/me/', {'auth': {'bearer': msgJson.access_token}}, function (err, response, msg) {
    context.res = {
    body: msg
    };
    context.done();
    });
    });
    };
  6. 将“request”npm 包添加到您的解决方案中。

    1. 转到https://yourfunctionname.scm.azurewebsites.net/dev/wwwroot/
    2. 将 package.json 文件添加到 wwwroot 文件夹并添加请求的依赖项。
    3. 将以下内容添加到您的 package.json 中:

    { "name": "你的函数名称", “版本”:“0.0.1”, “依赖项”:{ “请求”:“>=2.81.0” }}

  7. 使用控制台(左侧倒数第二个按钮)并运行:

npm 安装

  • 测试您的功能。

    1. 导航至您的函数。
    2. 系统应该提示您登录。<​​/li>
    3. 使用任何租户的任何 Active Directory 帐户。
    4. 系统还应该提示您表示同意。
    5. 之后,您应该会从响应中提供的 Microsoft Graph 中看到有关您登录的用户的信息。
  • 关于azure - 使用 Azure 应用服务身份验证将 Azure Function 作为 Multi-Tenancy 应用程序连接到 Microsoft Graph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720343/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com