You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行Node.js的Azure Function中获取Claims Principal?

Node.js 版 Azure Function 获取 Claims Principal 方案

在 Node.js 环境的 Azure Function 中,与 C# 中 ClaimsPrincipal 对等的用户声明对象会由 Azure 平台自动填充到请求对象中,无需手动注入,具体使用方式如下:


代码实现

v4 编程模型(当前推荐版本)

const { app } = require('@azure/functions');

app.http('Sample', {
    methods: ['GET'],
    authLevel: 'anonymous',
    route: 'sample',
    handler: async (request, context) => {
        // 对应 C# 中的 ClaimsPrincipal 对象
        const principal = request.user;
        // 提取 roles 声明,逻辑和 C# 示例完全对等
        const roles = principal.claims.filter(claim => claim.type === 'roles').map(claim => claim.value);

        // 后续业务逻辑
        return {
            status: 200,
            body: `匹配角色:${roles.join(',')}`
        };
    }
});

v3 编程模型

module.exports = async function (context, req) {
    // 对应 C# 中的 ClaimsPrincipal 对象
    const principal = req.user;
    const roles = principal.claims.filter(claim => claim.type === 'roles').map(claim => claim.value);

    context.res = {
        status: 200,
        body: roles
    };
};

注意事项

  • 生效前提:上述 user 属性只有在你为 Function App 启用了 App Service 身份验证(也叫 Easy Auth)、且配置 Azure AD 作为身份提供商时才会被自动填充,未启用身份验证时该属性为 undefined。
  • 如果你未使用平台自带的 Easy Auth,而是自行实现 JWT 校验,需要手动从请求的 Authorization 头提取 Bearer Token,使用 jsonwebtoken 等第三方库解析验证后得到对应的声明信息。

内容的提问来源于stack exchange,提问作者Ivan Koshelev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:04