2016-05-20 2 views
0

Je pensais cette fois que j'utiliserais les bibliothèques ADAL de Microsoft pour interagir avec Office365.Comment utiliser Microsoft ADAL pour Java pour effectuer des appels de service à service?

J'ai une tâche d'intégration à réaliser, donc aucune interaction utilisateur nécessaire, ce qui est là où je trouve:

https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx

Je suis en mesure d'obtenir les jetons en utilisant les informations d'identification des clients. Mais selon l'article je devrais "seulement" besoin d'un client_id et d'un client_secret.

Je n'ai pas trouvé de méthode sur la classe AuthenticationContext qui suggère un support pour cela.

J'espère que je néglige quelque chose.

Je sais que je peux effectuer les requêtes HTTP moi-même, mais cela va à l'encontre du but de l'utilisation du logiciel ADAL.

Répondre

2

La signature de la méthode que vous cherchez est:

public Future<AuthenticationResult> acquireToken(
    final String resource, 
    final ClientCredential credential, 
    final AuthenticationCallback callback) 

Le ClientCredential est créé avec client_id et client_secret de l'application. Voici un exemple emprunté à the sample included with ADAL4J:

Future<AuthenticationResult> future = context.acquireToken(
    "https://graph.windows.net", 
    new ClientCredential(clientId, clientSecret), 
    null); 
result = future.get(); 

(. En ce qui précède, context est l'instance de AuthenticationContext)

+0

J'ai un jeton d'accès maintenant avec ces informations d'identification, mais ... Lors de l'accès (à mon cas) crm en ligne, je reçois http 401 (non autorisé). Dans les autorisations Azure AD, il existe une seule option à spécifier, à savoir: Accéder à CRM Online en tant qu'utilisateur de l'organisation. Dois-je commencer un nouveau sujet à adresser ou peux-tu m'aider @PhilippeSignoret? – mpjjonker

+1

Vous devez commencer une nouvelle question, mais la réponse est la suivante: CRM Online ne prend en charge que les jetons app + utilisateur (autorisations déléguées), pas uniquement les applications. Si vous voulez que votre processus emprunte l'identité d'un utilisateur même lorsque l'utilisateur n'est pas là, il peut être obtenu par le jeton d'actualisation pour obtenir de nouveaux jetons d'accès, mais c'est une configuration fragile (et risquée). –