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

编程创建AzureAD SAML SSO非库应用时Identifier(Entity ID)未正确更新

问题说明
  • 调用Microsoft Graph API可成功创建AAD SAML SSO非库企业应用,但创建完成后AAD门户的编辑弹窗中*Identifier (Entity ID)(标识符/实体ID)值未填充,该值仅显示在弹窗外部的Basic SAML Configuration(基本SAML配置)*区域下,附对应界面截图。
  • 使用服务提供方工具测试该SAML配置时SSO调用失败,必须手动返回AAD门户在编辑弹窗中更新Entity ID值后SSO才可正常运行,经排查问题由Entity ID更新不一致导致。
  • 当前实现代码如下:
// Create Application
Application app = new Application();
app.displayName = "TestName";
app.identifierUris = Arrays.asList("some uri");
app.web = new WebApplication();
app.web.redirectUris = Arrays.asList("https://testredirect.com");
Application registeredApp = graphServiceClient.applications()
    .buildRequest()
    .post(app);

// Create Service principal
ServicePrincipal sp = new ServicePrincipal();
sp.appId = registeredApp.appId;
sp.preferredSingleSignOnMode = "saml";
sp.tags = Arrays.asList("WindowsAzureActiveDirectoryCustomSingleSignOnApplication", "WindowsAzureActiveDirectoryIntegratedApp");
ServicePrincipal createdServicePrincipal = graphServiceClient.servicePrincipals()
    .buildRequest()
    .post(sp);
原因与修复方案

问题核心是遗漏了Service Principal层面的SAML配置项:AAD门户SAML编辑弹窗读取的是服务主体(Service Principal)的samlSingleSignOnSettings属性值,而非应用注册(Application)对象上的identifierUris,当前代码仅在Application对象设置了identifierUris,没有同步配置SP对应的SAML参数,才会出现两处显示不一致、SSO调用失败的问题。

修复方式是在创建完Service Principal后,发起PATCH请求更新该SP的samlSingleSignOnSettings配置,补充entityId、回复URL等必填SAML参数,参考代码如下:

// 构建SAML SSO配置
SamlSingleSignOnSettings samlSettings = new SamlSingleSignOnSettings();
samlSettings.entityId = "你的Entity ID值"; // 和identifierUris保持一致即可
// 补充SAML回复URL,和配置的redirectUris对应
samlSettings.replyUrl = "https://testredirect.com";

// 更新已创建的Service Principal
ServicePrincipal updateSp = new ServicePrincipal();
updateSp.samlSingleSignOnSettings = samlSettings;

graphServiceClient.servicePrincipals(createdServicePrincipal.id)
    .buildRequest()
    .patch(updateSp);

补充说明:

  • 配置完成后无需手动在门户编辑,SAML编辑弹窗会自动读取到设置的Entity ID值
  • 建议将samlSingleSignOnSettings.entityId和Application对象的identifierUris值保持一致,避免后续配置漂移
  • 目前samlSingleSignOnSettings.entityId仅支持单个值,多实体ID场景需要后续通过门户或Graph API补充到基本SAML配置集合中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:54:34