【问题标题】:How to set properties of Azure Active Directory service principal from code?如何从代码中设置 Azure Active Directory 服务主体的属性?
【发布时间】:2025-12-08 06:00:01
【问题描述】:

我从图库中创建了 AAD 应用程序。应用注册部分有一个,企业应用程序中有一个。应用注册应用指向企业应用(本地目录中的托管应用)。

我想为企业应用配置 SAML SSO。有一些必须设置的属性。

我可以设置Sign on URL(使用图形API),但我不能设置Identifier (Entity ID)Reply URL。我认为这可以完成这项工作:

Set-AzureADApplication -ObjectId <id of app from App registrations> 
         -IdentifierUris $Identifiers -ReplyUrls $ReplyUrls

但企业应用程序未受影响。 Set-AzureADServicePrincipal 似乎也不适合我。

没有错误。刷新后门户上没有任何变化。我已连接到正确的租户并安装了新模块。

我也尝试使用 RM:Update-AzureRmADApplicationSet-AzureRmADApplicationSet-AzureRmADServicePrincipalUpdate-AzureRmADServicePrincipal。 我也找不到工作图 api。

有没有办法从代码中做到这一点?也许我只是做错了什么,它对你有用?我将不胜感激。谢谢

【问题讨论】:

    标签: azure powershell azure-active-directory saml service-principal


    【解决方案1】:

    但企业应用程序未受影响。

    其实企业受到了影响,使用Set-AzureADApplication后可以通过Microsoft Graph查看,只是没有出现在门户中,可能是bug,我不确定

    $Identifiers = @(
        "http://www.tableau.com/products/server",
        "https://azure.idtest.link"
    )
    $ReplyUrls = @(
        "https://azure.rptest.link/wg/saml/SSO/index.html"
    )
    Set-AzureADApplication -ObjectId <object-id of the AD App> -IdentifierUris $Identifiers -ReplyUrls $ReplyUrls 
    

    如果我们第一次在门户中设置它们,然后再次运行命令,你会发现它有效。

    而且貌似没有办法通过powrshell或者API设置Default Reply URL,如果我们设置的Reply URL和portal里面手动设置的不一样,会出现如下提示。

    但如果我们仔细研究一下,实际上Default 选项已被选中。

    更新:

    最终,我找到了窍门,这不是一个错误,我们只需要先通过 Microsoft Graph 为服务主体设置preferredSingleSignOnMode,然后我们就不需要在门户中手动配置它了。

    示例:

    PATCH https://graph.microsoft.com/beta/servicePrincipals/<object-id of the service principal>
    
    {
      "preferredSingleSignOnMode":"saml",
      "loginUrl": "https://azure.signtest.link"
    }
    

    【讨论】:

    • 我能够获得我设置的属性。你是对的。不知何故,它们没有出现在门户中,但我可以从图形 api 中获取它们。是的,这可能是某种错误。我假设目前无法在没有手动干预门户的情况下从代码设置整个 SAML。如果我错了,请纠正我。
    • 好的,再次感谢!让我们希望有一天能解决这个问题
    • @MichaelK。嗨,这不是错误,我找到了解决方案,请检查我的更新。还在此post 中更新了它。