Automation 如何以编程方式为基于库的应用程序配置Azure AD SSO?

Automation 如何以编程方式为基于库的应用程序配置Azure AD SSO?,automation,azure-active-directory,single-sign-on,tableau-api,Automation,Azure Active Directory,Single Sign On,Tableau Api,我需要为Tableau Server gallery应用程序配置Azure Active Directory SSO,因为它是在MS文档中以编程方式配置的。是否有有用的powershell cmdlet/rest API 我从第1步开始使用GraphAPI从gallery创建应用程序。 要获取可用模板,请执行以下操作: GET https://graph.microsoft.com/beta/applicationTemplates 要创建模板应用程序,请执行以下操作: POST https:

我需要为Tableau Server gallery应用程序配置Azure Active Directory SSO,因为它是在MS文档中以编程方式配置的。是否有有用的powershell cmdlet/rest API

我从第1步开始使用GraphAPI从gallery创建应用程序。 要获取可用模板,请执行以下操作:

GET https://graph.microsoft.com/beta/applicationTemplates
要创建模板应用程序,请执行以下操作:

POST https://graph.microsoft.com/beta/applicationTemplates/{id}/instantiate
现在我需要从代码中配置SAMLSO并分配用户。有没有一个简单的方法?我尝试了设置AzureADApplication,但它对我没用。企业应用程序仍未设置。 也许它还不被支持?我相信可以有一些解决办法。如果有任何帮助,我将不胜感激

是否有有用的powershell cmdlet/rest API

是的,但根据我的测试,我们需要分为两部分

1.设置
登录URL
,为此,我们需要调用Microsoft Graph-

在图形浏览器中,使用以下请求

PATCH https://graph.microsoft.com/beta/servicePrincipals/<object-id of the service principal>

{
  "loginUrl": "https://azure.signtest.link"
}
对于广告应用程序的
对象id
,请导航到门户中的Azure广告->
应用程序注册
->找到您的
Tableau服务器
。运行该命令后,设置将映射到企业应用程序

在门户中检查结果:

更新:

不确定这是否是一个bug,如果我创建了一个新的应用程序,但没有在门户中手动设置
标识符
回复URL
,那么只需使用上面的powershell进行设置,它们将不会映射到门户

但是,如果我们直接通过Microsoft Graph检查服务主体(企业应用程序),我们可以看到powershell实际上影响了服务主体

如果我们首先在门户中手动配置设置,然后使用powershell用其他值更新它们,那么它会起作用

而且看起来没有办法通过powrshell或API设置
默认回复URL
,如果我们设置
回复URL
,这与门户中手动设置的不同,它会有如下提示

但是如果我们仔细研究一下,实际上,
Default
选项是选中的

更新2:

最后,我发现了诀窍,它不是一个bug,我们只需要首先通过Microsoft Graph为服务主体设置
preferredSingleSignOnMode
,然后我们就不需要在门户中手动配置它了

样本:

PATCH https://graph.microsoft.com/beta/servicePrincipals/<object-id of the service principal>

{
  "preferredSingleSignOnMode":"saml",
  "loginUrl": "https://azure.signtest.link"
}
补丁https://graph.microsoft.com/beta/servicePrincipals/
{
“preferredSingleSignOnMode”:“saml”,
“罗吉努尔”:https://azure.signtest.link"
}

Hi@joy wang,谢谢你的回答!我测试了你的解决方案。我设法设置了登录Url,但set-AzureAdApplication出现了一些错误,该应用程序为我提供了
code:Request\u ResourceNotFound
,其中包含广告应用程序的
对象id
企业对象id
。我甚至在列表中找不到这个应用程序
Get AzureADApplication-All$true
。例如,如果我使用
获取AzureRmADServicePrincipal
更新AzureRmADApplication
应用程序就在那里。但是如果我使用
更新AzureRmADApplication
,企业应用程序将保持未设置状态(ReplyUrls和IdentifierUris)…@MichaelK。它应该可以工作,首先尝试更新
AzureAD
模块,使用
updatemodule-Name AzureAD-Force
。如果您将AD应用程序的对象id直接传递给
Set-AzureADApplication
,它会工作吗?@MichaelK。更新模块后,如果仍然无法工作,请确保您使用正确的租户登录,使用
Connect AzureAD-TenantId”“
再次登录。您是对的,我设置了错误的租户。
Connect AzureAD-TenantId”“
之后,
Set AzureADApplication
没有返回错误,但企业应用程序在涉及到
identieruris
ReplyUrls
@MichaelK时仍然未设置。你刷新门户了吗?
PATCH https://graph.microsoft.com/beta/servicePrincipals/<object-id of the service principal>

{
  "preferredSingleSignOnMode":"saml",
  "loginUrl": "https://azure.signtest.link"
}