Połącz istniejącą dzierżawę B2C za pośrednictwem interfejsu wiersza polecenia platformy Azure

Dec 01 2020

Jak programowo połączyć istniejącą dzierżawę B2C za pośrednictwem interfejsu wiersza polecenia platformy Azure? Uruchomienie tej linii:

az resource create --resource-group <rg> --resource-type Microsoft.AzureActiveDirectory/b2cDirectories --name <tenant>.onmicrosoft.com --location Europe --properties "{\"tenantId\": \"<tenantId>\", \"sku\": { \"name\": \"Standard\", \"tier\": \"A0\" } }"

Wraca, BadRequestError: The 'sku' property is required for creating a b2c directory resourceale jest

„Zasób łącza B2C” ARM wygląda następująco:

{
   "type": "Microsoft.AzureActiveDirectory/b2cDirectories",
   "apiVersion": "2017-01-30",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "tags": {},
   "sku": {
      "name": "Standard",
      "tier": "A0"
   },
   "properties": {
      "tenantId": "[parameters('tenantId')]"
   }
}

Dalsza informacja:

  • Próbowałem różnych wariacji dotyczących części SKU, takich jak całkowite pominięcie jej lub przeniesienie jej jako dedykowanego parametru --sku Standarditp., Ale żadna z nich nie działa
  • Usunięcie istniejącego linku za pośrednictwem az resource delete --ids /subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.AzureActiveDirectory/b2cDirectories/<tenant>.onmicrosoft.comdziała doskonale
  • Dlaczego tego potrzebujemy? Automatyzujemy nasze wdrażanie infra za pomocą Terraform. Jesteśmy świadomi ograniczeń automatyzujących dzierżawców B2C (patrz tutaj , tutaj lub tutaj ), więc staramy się usunąć / dodać łącze b2c za pośrednictwem potoku, aby przynajmniej zachować czystość subskrypcji podczas niszczenia / stosowania infra.
  • Łączenie istniejącej dzierżawy B2C za pośrednictwem Azure Portal wygląda następująco

Wszelkie rady mile widziane. Dzięki za pomoc!

Odpowiedzi

SatyaV Dec 02 2020 at 14:31

Nie sądzę, aby interfejs wiersza polecenia platformy Azure obecnie umożliwia zarządzanie dzierżawcami B2C.

Jak już wiesz, została przeprowadzona szczegółowa dyskusja https://github.com/Azure/azure-cli/issues/12058

Inne podejście zautomatyzowane:

Przechwyciłem Fiddler Traces, aby zrozumieć przepływ / lub punkt końcowy, który jest za to odpowiedzialny. Udało mi się wskazać poniższy punkt końcowy. Sprawdzałem utworzenie nowej dzierżawy Azure B2C.

PUT https://management.azure.com/subscriptions/SUBSCRIBTION/resourceGroups/RESOURCEGROUP/providers/Microsoft.AzureActiveDirectory/b2cDirectories/contosoorganiztion.onmicrosoft.com?api-version=2019-01-01-preview

{"location":"United States","sku":{"name":"Standard","tier":"A0"},"properties":{"createTenantProperties":{"displayName":"Contoso Organization","countryCode":"US"}}}

Jednak po mojej stronie nie mogłem zaznaczyć opcji „Link do istniejącego najemcy” (na żądanie) ze względu na moje uprawnienia. Ale zakładam, że powinien istnieć podobny punkt końcowy odpowiedzialny za to samo. Możesz przechwycić ślady Fiddlera z odszyfrowanym protokołem HTTPS (lub dowolnym narzędziem, które pomoże przechwycić odszyfrowany ruch HTTPS), próbując połączyć istniejącą dzierżawę w celu zrozumienia punktu końcowego i treści żądania.

Uwaga :

Należy pamiętać, że ten interfejs API / punkt końcowy nie jest obsługiwany i może ulec zmianie, dlatego nie jest zalecany w środowiskach produkcyjnych:

Aby dotrzeć do punktu końcowego, będziesz potrzebować tokena dostępu.

Aby uzyskać token, identyfikator zasobu Azure Portal byłby następujący: 74658136-14ec-4630-ad9b-26e160ff0fc6

az account get-access-token --resource 74658136-14ec-4630-ad9b-26e160ff0fc6