Microsoft graph api microsoft graph rest api测试版:由azure ad b2c中的api创建的应用程序无效

Microsoft graph api microsoft graph rest api测试版:由azure ad b2c中的api创建的应用程序无效,microsoft-graph-api,azure-ad-b2c,beta,Microsoft Graph Api,Azure Ad B2c,Beta,我正试图通过以下文档使用beta api创建广告应用程序: 应用程序可以按预期在Azure AD B2C(非Azure Active Directory)中成功创建。问题是,当我试图从门户打开此应用程序时,页面一直在加载,而应用程序信息从未显示。我可以从浏览器开发工具中看到一个错误: 以下请求返回404错误: 我可以验证applicationId确实是我新创建的广告应用程序的appid。不确定为什么要获取notfound错误 然后我在我的b2c广告中手动创建了另一个应用程序。我比较了REST

我正试图通过以下文档使用beta api创建广告应用程序:

应用程序可以按预期在Azure AD B2C(Azure Active Directory)中成功创建。问题是,当我试图从门户打开此应用程序时,页面一直在加载,而应用程序信息从未显示。我可以从浏览器开发工具中看到一个错误:

以下请求返回404错误:

我可以验证applicationId确实是我新创建的广告应用程序的appid。不确定为什么要获取notfound错误

然后我在我的b2c广告中手动创建了另一个应用程序。我比较了RESTAPI为这两个应用程序返回的模式。唯一的区别是手动创建的一个具有默认的用户模拟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


我是否遗漏了请求架构的任何内容?如何像手动创建应用程序一样从RESTAPI创建有效的应用程序?

我想我找到了根

从api创建的应用程序没有关联的服务原则。需要为其创建sp。我找不到用于从中创建sp的rest 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 beta API,因为它们可能会发生更改

要使应用程序在AAD B2C(获取令牌)中成功运行,它需要满足以下要求

  • 服务负责人
  • 同意openid和上的脱机访问范围 租户中的Microsoft图形服务主体
  • 服务主体API目前处于测试阶段。测试版也在测试版中

    算法是

  • 使用应用程序api创建应用程序
  • 为它创建一个客户端(我们称之为clientSP)
  • 使用服务主体API在租户中查找对应于Microsoft Graph应用程序(AppId#0000000 3-0000-0000-c000-000000000000)的服务主体。此服务主体始终由Azure AD在目录中创建,因此您只需搜索它。让我们调用ResourceSP
  • 使用OAUTH2Permissions api为openid和脱机访问范围在ResourceSP上创建并授予clientSP许可 这里的示例应该有帮助-