2016-05-18 7 views
2

J'ai récemment tenté de créer un utilisateur dans mon instance Azure AD B2C (Aperçu) par programmation. La partie qui me retient essaie simplement de récupérer un jeton. Jusqu'à présent, je l'ai essayé:Création d'un utilisateur Azure AD B2C (Aperçu) par programme

var clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; 
var clientSecret = @"xxxxxxxxxxxxxxxx"; 
var tenant = "xxxxxxxxxxxx.onmicrosoft.com"; 

var authContext = new AuthenticationContext("https://login.microsoftonline.com/" + tenant); 

var credential = new ClientCredential(clientId, clientSecret); 

var result = await authContext.AcquireTokenAsync("https://graph.windows.net", credential); 

Lorsque l'exécution frappe la dernière ligne pour tenter d'acquérir un jeton, je reçois:

Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: AADSTS70001: Application « xxxxxxxx -xxxx-xxxx-xxxx-xxxxxxxxxxxx 'n'est pas pris en charge pour cette version de l'API.

Que puis-je déduire de cette erreur? Cela signifie-t-il que l'accès au graphique a été temporairement supprimé pour Azure AD B2C? Ou dois-je activer quelque chose? Ou est-ce que l'une des URL de point de terminaison est incorrecte?

+0

Utilisez-vous ADAL v2? ceci est requis pour l'API graphique, pas pour ADAL v4 (qui est requis pour B2C), sinon, je suppose que vous avez suivi ce tutoriel: https://azure.microsoft.com/fr-fr/documentation/articles/active-directory-b2c -devquickstarts-graph-dotnet/qui fonctionne pour notre B2C pour créer des utilisateurs –

+0

J'ai le paquet NuGet Microsoft.IdentityModel.Clients.ActiveDirectory qui est la version 3.10.30516. Savez-vous si je devrais suivre toutes les étapes de Powershell montrées dans l'échantillon? Ils semblent être sur la mise en place des applications et le secret du client, que je semble être capable de faire directement dans la lame Azure. –

+1

Oui, vous devez créer une application séparée et un secret client, celui en B2C n'est pas utilisable (pas assez d'autorisations), nous utilisons la version 2.x de la bibliothèque ADAL. –

Répondre

2

Pour la connexion à l'API graphique, vous devez configurer un clientId et un secret distincts. Suivez ce tutoriel B2C pour créer le service principal et joindre les 3 autorisations API Graphique:

https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/

Assurez-vous d'utiliser ADAL v2 (ou ADAL v3 vient de sortir), et non ADAL v4 qui est juste expérimentale B2C. À l'avenir, la bibliothèque MSAL combinera tout cela avec un peu de chance.

Le script suivant vous permet de créer cela dans 1 script Powershell:

$msolcred = Get-Credential 
Connect-MsolService -credential $msolcred 

$bytes = New-Object Byte[] 32 
$rand = [System.Security.Cryptography.RandomNumberGenerator]::Create() 
$rand.GetBytes($bytes) 
$rand.Dispose() 
$newClientSecret = [System.Convert]::ToBase64String($bytes) 

$principal = New-MsolServicePrincipal -DisplayName "Dummy" -Type password -Value $newClientSecret 

Add-MsolRoleMember -RoleObjectId 88d8e3e3-8f55-4a1e-953a-9b9898b8876b -RoleMemberObjectId $principal.ObjectId -RoleMemberType servicePrincipal 
Add-MsolRoleMember -RoleObjectId 9360feb5-f418-4baa-8175-e2a00bac4301 -RoleMemberObjectId $principal.ObjectId -RoleMemberType servicePrincipal 
Add-MsolRoleMember -RoleObjectId fe930be7-5e62-47db-91af-98c3a49a38b1 -RoleMemberObjectId $principal.ObjectId -RoleMemberType servicePrincipal 

Write-Host "clientsecret = $newClientSecret" 
Write-Host "clientId  = $(($principal).AppPrincipalId)" 
Write-Host "tenant  = $((Get-MsolDomain).Name)"