如何在运行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
相关产品推荐
相关产品推荐

