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

在Optimizely CMS 12中使用AAD SSO时能否启用用户通知框架?

在搭配Azure AD SSO的Optimizely CMS 12中启用用户通知框架的解决方案

问题根源

启用Azure AD(Entra ID)SSO后,通知无法显示的核心原因是用户标识不匹配:

  • 未启用SSO时,通知框架依赖本地系统用户名关联用户;
  • 启用SSO后,登录用户的身份标识为Entra ID的UPN(firstname.lastname@yourdomain.com),但通知发送或框架配置未同步使用该标识,导致无法匹配到对应用户。

解决方案

1. 发送通知时使用正确的用户标识

发送通知必须以用户的User.Identity.Name(即AAD UPN)作为接收方标识,而非本地用户名。示例代码如下:

var notificationService = ServiceLocator.Current.GetInstance<INotificationService>();
var recipient = new UserNotificationRecipient("firstname.lastname@yourdomain.com"); // 传入AAD UPN
var notification = new NotificationMessage
{
    Subject = "外部系统通知",
    Body = "这是一条来自外部系统的测试通知",
    Type = NotificationType.Information
};
await notificationService.SendAsync(notification, recipient);

2. 配置AAD身份验证映射UPN为用户标识

在Startup.cs中调整OpenID Connect配置,确保User.Identity.Name被设置为AAD用户的UPN:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
    .EnableTokenAcquisitionToCallDownstreamApi()
    .AddInMemoryTokenCaches();

// 强制将UPN作为用户身份标识
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    options.TokenValidationParameters.NameClaimType = "upn";
});

3. 验证CMS用户标识一致性

进入Optimizely CMS后台的用户管理界面,确认通过AAD同步的用户的用户名字段与UPN完全一致(格式为firstname.lastname@yourdomain.com)。若不一致,需调整用户同步逻辑,确保两者匹配。

额外排查步骤

  • 检查Optimizely通知存储表(tblNotification),确认Recipient字段存储的是正确的UPN值,且与登录用户的User.Identity.Name完全匹配(注意大小写一致性);
  • 确认AAD用户拥有Optimizely系统的通知接收权限(默认权限已启用,可在CMS权限设置中验证)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:34:53