无法使用b2cIdentityUserFlow通过powershell创建Azure B2C用户流

sf6xfgos  于 2023-02-09  发布在  Shell
关注(0)|答案(1)|浏览(118)

我试图用PowerShell创建一个用户流,但是我收到了The remote server returned an error: (403) Forbidden.。我正在阅读微软的文档,但是没有成功。

Connect-AzAccount -Tenant "myorg.onmicrosoft.com"

  $managementAccessToken = Get-AzAccessToken -TenantId "$tenantId" -ResourceTypeName MSGraph
  $DefinitionFilePath = "C:\azdeploy\flows\b2csignin.json"
  $signinFlowContent = Get-Content $DefinitionFilePath

  Invoke-WebRequest -Uri "https://graph.microsoft.com/beta/identity/b2cUserFlows" `
    -Method "POST" `
    -Headers @{
      "Content-Type" = "application/json"
      "Authorization" = "Bearer $($managementAccessToken.Token)";
    } `
    -Body $signinFlowContent

JSON内容(默认来自Microsoft文档):

{
    "id": "Customer",
    "userFlowType": "signUpOrSignIn",
    "userFlowTypeVersion": 3
}

Connect-AzAccount是由全局管理员用户创建的,也尝试了生命周期工作流管理员权限。我不知道该怎么做,尝试了旧API,但它已被弃用。我需要创建一些带有应用程序声明的用户流。我如何才能实现这一点?谢谢!

gcuhipw9

gcuhipw91#

我尝试在我的环境中重现相同的结果,结果如下:

我创建了一个json文件与相同的参数,你喜欢下面:

我有一个名为**Sritest的用户,其角色为全局管理员**,如下所示:

当我用上面的用户登录运行与您相同的代码时,我得到了相同的错误如下:

Connect-AzAccount -Tenant "myorg.onmicrosoft.com"

$managementAccessToken = Get-AzAccessToken -TenantId "$tenantId" -ResourceTypeName MSGraph
$DefinitionFilePath = "C:\test\b2csignin.json"
$signinFlowContent = Get-Content $DefinitionFilePath

Invoke-WebRequest -Uri "https://graph.microsoft.com/beta/identity/b2cUserFlows" `
    -Method "POST" `
    -Headers @{
      "Content-Type" = "application/json"
      "Authorization" = "Bearer $($managementAccessToken.Token)";
    } `
    -Body $signinFlowContent
    • 答复:**

您需要具有IdentityUserFlow.ReadWrite.All权限才能创建用户流。
为了解决错误,我注册了一个Azure AD应用程序,并添加了API权限,如下所示:

在应用程序中添加API权限后,请确保授予管理员同意。现在,我创建了一个客户端密码,并通过修改PowerShell代码在获取访问令牌时添加了所有这些详细信息。
当我运行下面的modified代码时,成功创建了用户流,如下所示:

Connect-AzureAD -TenantId "c6d99123-0cf9-4b64-bde3-xxxxxxxxx"

$graphtokenBody = @{   
   grant_type    = "client_credentials"   
   scope         = "https://graph.microsoft.com/.default"   
   client_id     = "appID"   
   client_secret = "secret"
}  
    
$graphToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/c6d99123-0cf9-4b64-bde3-xxxxxxxxx/oauth2/v2.0/token" -Method POST -Body $graphtokenBody 
$token = $graphToken.access_token

$DefinitionFilePath = "C:\test\b2csignin.json"
$signinFlowContent = Get-Content $DefinitionFilePath

Invoke-WebRequest -Uri "https://graph.microsoft.com/beta/identity/b2cUserFlows" `
    -Method "POST" `
    -Headers @{
      "Content-Type" = "application/json"
      "Authorization" = "Bearer $($token)";
    } `
    -Body $signinFlowContent
    • 答复:**

为了确认这一点,我在Portal中进行了相同检查,其中B2C_1_Customeruserflow如下所示:

相关问题