2017-04-18 3 views
0

Nous implémentons un client soap en Java (en utilisant cxf wsdl2java). Dans les projets précédents, l'authentification était basée sur WS-Security ou Basic HTTP Authentication. Ils sont tous deux faciles à tester dans SoapUI et implémentés dans Java.Comment implémenter Java soap client lorsque le serveur utilise l'authentification ADFS?

Cette fois-ci, le serveur utilise un proxy d'application Web qui fonctionne comme un proxy inverse et ADFS (Active Directory Federation Services) à des fins d'authentification. Je ne connais pas les détails de ce que cela signifie, mais ce qui se passe lors de l'ouverture de l'URL du point de terminaison wsdl dans un navigateur, c'est que nous sommes redirigés vers une page de connexion similaire à celle du bureau https://login.microsoftonline.com/ entrer les informations d'identification. Lorsque vous vous connectez manuellement, nous sommes redirigés vers le point de terminaison wsdl avec un? AuthToken = xxx ajouté à la fin et je pense que le jeton dure 1 heure. Nous avons essayé de demander au fournisseur d'utiliser une authentification plus standard, mais pour l'instant c'est la seule chose que nous avons. Comment abordons-nous cela?

Lorsque vous essayez de faire une demande de test à partir de SoapUI, nous obtenons simplement le code html complet de la page de connexion en réponse. Je vois qu'il y a une option d'authentification basée sur le formulaire dans SoapUI mais cela ne fonctionnera pas puisque la page de connexion a plusieurs types de compte et plusieurs champs de nom d'utilisateur/mot de passe. La solution de contournement pour le test consiste simplement à se connecter manuellement et à utiliser authToken. Mais comment pouvons-nous automatiser cela dans le client Java cxf?

Lors de la connexion à l'URL de point final dans un navigateur, voici comment l'url semble après redirigé vers la page de connexion:

[url ADFS seriver] /adfs/ls?version=1.0 & action = signin & realm = urn% 3AAppProxy% 3Acom & appRealm = a10037ed-ca1e-e711-9436-00215a9b01ac & returnUrl = [url point final wsdl] & client demande-id = 13A5B5A6-B574-0000-6FBA-A51374B5D201

Répondre

1

Vous pouvez » t utilisez SOAP pour vous authentifier avec ADFS via un écran de connexion. En effet, ADFS ne prend en charge que WS-Fed ou SAML-P ou OpenID Connect (ADFS 4.0).

Ce que vous pouvez faire est d'utiliser WS-Tust pour ce faire.

WS-Fed prend en charge deux profils à savoir. passif (écran de connexion du navigateur) ou actif (service Web/WCF). Vous devez utiliser ce dernier.

Il existe un certain nombre de points de terminaison de profil actifs disponibles dans ADFS. Tous ne sont pas activés par défaut, vous devrez peut-être les activer.

+0

Je vais le suggérer au fournisseur, merci! –