2017-10-11 2 views

Antwort

0

Die korrekte Methode zum Hinzufügen von Attributen ist über das Administrationsportal 'portal.azure.com'.

Sie müssen auch einen Benutzer über eine Richtlinie erstellen, bevor diese Attribute tatsächlich für alle Benutzer verfügbar werden. Die andere Sache, die in Betracht gezogen werden muss, ist, dass der Erweiterungsname in jeder Umgebung anders ist. Daher benötigen Sie eine benutzerdefinierte Logik, um die JSON-Benutzer zu analysieren, die Sie von GraphApi erhalten. Vergewissern Sie sich, dass das Attribut endet Der Name, den Sie diesem Attribut gegeben haben.

Beispiel:

//Java, sorry 
private YourCustomGraphApiUser populateCustomProperty(JsonNode jsonUser) throws JsonProcessingException{ 

    YourCustomGraphApiUser azureUser = mapper.treeToValue(jsonUser, YourCustomGraphApiUser.class); 
    String[] customAttributeNames = new String()["one","two"]; //Replace this with some values from some injected properties 
    for(String attributeName : customAttributeNames){ 
     JsonNode customAttribute = jsonUser.get(attributeName); 
     if(customAttribute != null){ 
      azureUser.set(attributeName, customAttribute.asText());//Assuming custom attributes are stored in a map-like structure in YourCustomGraphApiUser. 
     } 
     else{       
      throw new NotFoundException("Error getting the name for custom attribute "+attributeName, e); 
      // OR you could ignore and just log an error. Whatever. 
     }   
    } 
    return azureUser; 
} 
+1

Warum kann ich benutzerdefinierte Attribute nicht programmgesteuert hinzufügen? Ich habe eine Bibliothek, die MyOwnUser definiert, und für diesen Benutzer brauche ich benutzerdefinierte Attribute. Warum sollte ich diese im Portal jedes Mal für verschiedene Verzeichnisse hinzufügen? – alvipeo

+0

@alvipeo Das ist eine ausgezeichnete Frage! Ich habe es selbst oft gefragt. Es ist ebenso frustrierend, dass ich manuell ein Konto mit diesen Attributwerten erstellen musste, bevor sie verfügbar wurden. Wenn ich bei der programmatischen Erstellung tot wäre, würde ich vielleicht mehr in das B2C-Modul für die azurblaue Powershell schauen; Ich habe es noch nie gemacht, aber vielleicht könnten Sie ein Skript erstellen, das jede Umgebung einrichtet. Ich habe auch noch nicht mit benutzerdefinierten Richtlinien gearbeitet, aber ich verstehe, dass sie konfigurierbarer sind (XML und so), obwohl es mehr anfängliche Anstrengungen erfordert. – Pytry

+0

Ich habe gerade eine Klasse erstellt, die Erweiterungseigenschaften in Code erstellt. Müssen Sie mit dem Setzen/Lesen seines Wertes von einem Benutzer fertig sein – alvipeo

1

Sie erstellen extensionProperty auf dem Objekt gewünschten Anwendungs ​​Graph API.

Beispiel JSON Anfrage:

POST https://graph.windows.net/contoso.onmicrosoft.com/applications/269fc2f7-6420-4ea4-be90-9e1f93a87a64/extensionProperties?api-version=1.5 HTTP/1.1 
Authorization: Bearer eyJ0eXAiOiJKV1Qi...r6Xh5KVA 
Content-Type: application/json 
Host: graph.windows.net 
Content-Length: 104 
{ 
"name": "skypeId", 
"dataType": "String", 
"targetObjects": [ 
    "User" 
] 

} 

Wenn der Vorgang erfolgreich ist, wird es einen HTTP-201 Erstellt Statuscode zusammen mit den vollständig qualifizierten Erweiterung Eigenschaftsnamen zurückgeben, die für das Schreiben von Werten an das Ziel verwendet werden kann, Art. Referenz:

Verwandte Themen