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

如何在Azure AD验证的Azure函数中获取用户信息

邓德厚
2023-03-14

我有一个angular应用程序和一个Azure Functions应用程序。这两个应用程序都经过Azure AD的身份验证。虽然我在放入正确的凭据后调用Functions应用程序的功能,但它工作正常。Angular应用程序正在将令牌附加到调用中,用于验证Azure函数。然而,在Azure函数中,我需要根据用户设置一些逻辑,但无法找到如何获取调用该函数的用户的信息。我尝试ClaimsPrincipal获取用户信息,但它并没有给我提供我所期望的用户信息,而是返回管理信息。

谢谢。

共有1个答案

寇和璧
2023-03-14

您可以使用Microsoft Graph绑定,特别是身份验证令牌绑定。

只需确保将identity属性的值设置为userFromRequest,然后调用一个Microsoft Graph API,如文档所示。

以下是文档中的示例,以供参考

作用json

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "type": "token",
      "direction": "in",
      "name": "graphToken",
      "resource": "https://graph.microsoft.com",
      "identity": "userFromRequest"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

C#脚本

using System.Net; 
using System.Net.Http; 
using System.Net.Http.Headers;
using Microsoft.Extensions.Logging; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, string graphToken, ILogger log)
{
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", graphToken);
    return await client.GetAsync("https://graph.microsoft.com/v1.0/me/");
}

NodeJS/JavaScript

const rp = require('request-promise');

module.exports = function (context, req) {
    let token = "Bearer " + context.bindings.graphToken;

    let options = {
        uri: 'https://graph.microsoft.com/v1.0/me/',
        headers: {
            'Authorization': token
        }
    };

    rp(options)
        .then(function(profile) {
            context.res = {
                body: profile
            };
            context.done();
        })
        .catch(function(err) {
            context.res = {
                status: 500,
                body: err
            };
            context.done();
        });
};
 类似资料:
  • 我在我的nodejs应用程序中为注册用户在keybeat上实现了keybeat,我使用的登录API是: 如果用户名和密码正确,则返回登录用户的令牌, 现在我需要传递这个令牌(通过上面的API返回),并检查这个令牌是否正确,如果令牌正确,我需要用户详细信息,是否有用于此的API。 提前谢谢

  • 现在,使用这些标记,我在api文件中创建了一个函数,但它将<code>0 函数代码: 那么,如何使用WordPress hook<code>wp_get_current_user()获取登录用户数据呢? 其次,我如何使< code > jwt-auth/v1/token API动态获取用户名和密码? P. S我在htacceess文件中添加了ReWriteCond和ReWriteRur,并且在我的

  • 我想验证一个数字签名的PDF,并获得类似于PHP7.4中AdobeAcrobat的信息。 我通过读取PDF文件中ByteRange中定义的字节并将其存储在变量中,从而获得PDF的签名 然后我将其转换为:

  • 我有Spring座后端和角前端。 身份验证是使用请求JSON正文中带有用户名和密码的“/登录”URL的POST请求来执行的(我使用基于表单的身份验证)。REST后端回复OK代码。一切都很好,我可以执行来自前端的其他需要身份验证的请求。 但是前端需要知道身份验证用户的角色是什么,以便它可以显示正确的视图/记录。我们从哪里可以在前端得到这个角色?我们从身份验证中得到的唯一响应是OK,这对于REST来说

  • 我正在从NVP/SOAP PayPal API集成转向更新的REST API。 我以前的网站代码使用的是“快速结帐”流程。 网站发起付款,用户被重定向到贝宝; 用户登录并确认发起的支付; 用户被重定向到该网站,该网站调用PayPal以获得用户个人信息以保存在交易记录中(例如姓名、地址、...); 我的意思是,在onAuthorize回调方法中,我确实有用户授权支付的paymentID和payerI

  • 背景:我正在使用Firebase云功能、新的Firestore数据库和带有Android客户端的存储桶。 我想完成的内容:当用户将图片上传到存储桶时,我想使用云函数获取文件路径/链接到存储桶中的图像位置,并将这个字符串作为新文档存储在FireStore中当前登录用户文档下名为“Pictures”的新集合下。 问题:如何获取当前登录的用户,并使用云功能将此用户上传的图像文件路径/链接作为新文档存储在