我正在尝试按照以下文档使用 beta api 创建广告应用程序: https://learn.microsoft.com/en-us/graph/api/application-post-applications?view=graph-rest-beta&tabs=http
可以按预期在 Azure AD B2C(不是 Azure Active Directory)中成功创建应用程序。问题是当我尝试从门户打开此应用程序时,页面只是不断加载,而应用程序信息从未显示。我可以看到浏览器开发工具有错误:
我可以验证 applicationId 确实是我新创建的广告应用程序的 appid。不知道为什么会收到未找到的错误。
然后,我在 B2C 广告中手动创建了另一个应用。我比较了 get-application 返回的模式这两个应用程序的其余 api。唯一的区别是手动创建的一个具有默认的 user_impersonation api 范围,而另一个则没有。也许这会导致错误。
这是我创建广告应用程序的完整 powershell 脚本:
$b2cDomain = "mytestb2ctenant.onmicrosoft.com"
$applications = "https://graph.microsoft.com/beta/applications"
$headers = @{
"Authorization" = $accessToken;
}
@app = "mytestapp"
$request = @{
displayName = $app
identifierUris = @("https://$b2cDomain/api")
signInAudience = "AzureADandPersonalMicrosoftAccount"
web = @{
redirectUris = @("https://any.valid.url")
implicitGrantSettings = @{
enableIdTokenIssuance = $false
enableAccessTokenIssuance = $true
}
}
isFallbackPublicClient= $false
}
$body = $request | ConvertTo-Json
Log "creating ad app: $app"
$appResponse = Invoke-RestMethod `
-Uri $applications `
-Method Post `
-Headers $headers `
-ContentType "application/json" `
-Body $body
我是否错过了请求架构的任何内容?我如何从 REST API 创建一个有效的应用程序,就像我手动创建它一样?
最佳答案
我猜我找到了根源。
从 API 创建的应用程序没有关联的服务原则。需要为它创建一个sp。我无法从 here 找到用于创建 sp 的其余 api 。最终使用 AzueAD powershell 命令:
Connect-AzureAD -Credential $credential -TenantId $b2cTenantId
New-AzureADApplication -DisplayName "myapp"
$app = Get-AzureADApplication -SearchString "myapp"
New-AzureADServicePrincipal -AppId $app.AppId
现在一切似乎都正常。
顺便说一句,Azure AD B2C 和 Azure Active Directory 中的应用程序应该是相同的东西,只是显示不同的位置。我之前很困惑。
关于microsoft-graph-api - 微软图休息API测试版: application created by api in azure ad b2c is not valid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59062273/