如何向Azure AD UserExtension添加多值?文档与JWT解析存差异
如何在Azure AD UserExtension中存储多值数组?
Azure AD的自定义UserExtension确实仅支持字符串类型,官方文档明确了这一限制,所以没法直接存储原生数组类型。
你提到解析JWT时看到扩展值是数组形式,大概率是解析端自动把存储的JSON字符串反序列化成了数组,但本质上Azure AD里存的还是字符串格式。
目前你采用的将JSON数组序列化为字符串存入的方案,是当前最可行且通用的解决办法,代码示例如下:
Set-AzureADUserExtension -ObjectId $UserId -ExtensionName $ExtensionName -ExtensionValue '["Val1", "val2", "val3"]'
读取时只需要把字符串反序列化为数组即可,这种方式兼容性极强,不管是后端服务还是前端应用,只要能处理JSON就能轻松解析。
另外提两个不推荐的替代思路,供你参考:
- 用多个独立的扩展属性分别存单个值:但这样会占用更多扩展字段,后续新增值还要创建新属性,扩展性极差。
- 尝试使用Azure AD原生多值属性:但自定义扩展属性不支持多值类型,只有User对象自带的少数属性(比如
proxyAddresses)支持多值,这条路走不通。
综上,保持JSON字符串序列化的方案是官方限制下最优的选择,既灵活又易维护。
内容的提问来源于stack exchange,提问作者Marko Taht
相关产品推荐
相关产品推荐

