2017-06-12 13 views
0

Da Microsoft Graph API verfügt nicht über die Funktion B2C AD-Benutzer zu verwalten, von einem der docs wir wurden gebeten, ADAL zu verwenden, die eine spezielle Anwendung zu erstellen, erforderlich der Azure AD B2C-Mieter. Erstellt einen Anwendungsschlüssel, um API-Zugriff über die App "xamarin.ios" bereitzustellen.Ausnahmezugriffs Azure B2C AD mit ADAL Bibliothek für die Benutzerverwaltung

AuthenticationContext authContext = new AuthenticationContext(authority); 
      credential = new ClientCredential(clientId, GraphClientSecret); 
      authResult = await authContext.AcquireTokenAsync(graphResourceUri, credential); 

Am AcquireTokenAsync Anruf wir eine Ausnahme bekommen

AcquireTokenHandlerBase.cs: System.NullReferenceException: Object reference not set to an instance of an object at Microsoft.IdentityModel.Clients.ActiveDirectory.BrokerHelper.get_CanInvokeBroker() [0x0000c] in <786d1e888b334ad993ac80d2bc3b6e92>:0 
    at Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase+<RunAsync>d__55.MoveNext() [0x00389] in <97581c6894a642ef95d008cded8ad4ac>:0 

Wenn ich diesen Anruf zu Entfernen Sie die Anmeldeinformationen ändern, bekomme ich nur ein Login-Bildschirm.

Pakete verwendet:

Probe von Sample from Docs

Jede Hilfe wäre stark gemacht geschätzt.

Antwort

2

Sie sollten die Graph API nicht mit Client-Anmeldeinformationen von einer nativen Client-Anwendung (z. B. einer Xamarin/iOS-App) aufrufen. Dies ist eine riesige Sicherheitslücke. Clientanwendungen sind von Natur aus unsicher. Jeder kann den Code widerspiegeln und Ihre client_id- und client_secret-Daten abrufen, die er zum Erstellen/Aktualisieren/Löschen von Benutzern in Ihrem Azure AD B2C-Mandanten verwenden kann.

Ihre native Clientanwendung sollte eine Web-API aufrufen, die wiederum die Graph-API aufruft. Diese Web-API (link to sample) ist eine API, die Sie erstellen, die über eine Berechtigungslogik für die Benutzerverwaltung verfügt. Sobald die Benutzerverwaltung in Azure AD B2C über Microsoft Graph und MSAL unterstützt wird, benötigen Sie diese API nicht mehr und können delegierte Berechtigungen (im Gegensatz zu Anwendungsberechtigungen mit Clientanmeldeinformationen) verwenden, um Ihre native Clientanwendung zu verwenden direkt zum Microsoft Graph. In der Zwischenzeit müssen Sie Ihre eigene Web-API gemäß den obigen Anleitungen aufstellen.

+0

Vielen Dank. – Jeeva