2014-06-21 5 views
0

J'ai développé un projet asp.net MVC 4. Actuellement, je prévois d'accéder à l'API Azure Graph pour obtenir des données utilisateur AD (accès aux propriétés de navigation de l'utilisateur, Réf. lien: Azure Rest API Reference).Azure AD: Comment accéder à Azure AD Graph API sans utiliser de bibliothèque

J'ai vérifié Azure AD Graph Library aide, mais en utilisant ce que je ne suis pas en mesure d'accéder à la navigation propery (ex: accès à la propriété du gestionnaire de l'utilisateur)

Toute aide est appréciée.

Répondre

0

Vous pouvez facilement accéder directement au graphique via HttpClient ou toute autre classe générique de génération de requête http. Vous avez juste besoin de respecter les conventions OData pour accéder à des entités spécifiques et filtrer vos résultats. Pour certaines requêtes courantes, vous pouvez essayer directement sans aucune bibliothèque Graph http://msdn.microsoft.com/en-us/library/azure/jj126255.aspx

1

Par défaut, toutes les propriétés de navigation ne sont pas chargées lorsque vous obtenez une entité (dans notre cas 'Utilisateur'). Vous devriez utiliser Expand (..). Ci-dessous je donne un exemple comment attribuer Manager pour l'utilisateur et comment obtenir la propriété de navigation Gestionnaire de l'utilisateur (quelques nuances d'infrastructure omis):

public async Task<Result> AssingUserManager(string userUpn, string managerUpn) 
{ 
    try 
    { 
     var user = (AD.User)await ADClient.Users 
      .Where(x => x.UserPrincipalName == userUpn) 
      .ExecuteSingleAsync(); 

     var manager = (AD.User)await ADClient.Users 
      .Where(x => x.UserPrincipalName == managerUpn) 
      .ExecuteSingleAsync(); 

     user.Manager = manager; 

     await manager.UpdateAsync(); 
     return Result.Ok(); 
    } 
    catch (Exception ex) 
    { 
     return Result.Fail(new Error("Failed to assign manager", null, ex)); 
    } 
} 

public async Task<Result<User>> GetUserManager(string upn) 
{ 
    try 
    { 
     var user = (AD.User)await ADClient.Users 
        .Where(x => x.UserPrincipalName == upn) 
        .Expand(x => x.Manager) 
        .ExecuteSingleAsync(); 

     var manager = user.Manager as AD.User; 
     if (manager != null) 
     { 
      return Result.Ok(ConvertToModel(manager)); 
     } 

     return Result.Fail<User>(new Error("Manager not found for specified user", null)); 
    } 
    catch (Exception ex) 
    { 
     return Result.Fail<User>(new Error("Failed to get user's manager", null, ex)); 
    } 
} 

En outre, notez que lorsque je mets à jour le graphique que je fais en appelant UpdateAsync sur la utilisateur affecté en tant que gestionnaire et non en tant qu'utilisateur dont la propriété Manager est en cours de définition (prise de ce code source)

Questions connexes