Bonjour,
Je dois, depuis l'IBM i, interroger des webservices de l'ERP Infor M3.
J'ai déjà réalisé des tests d’interrogation de webservices via la commandes HTTPGETCLOB et je ne rencontre pas de problème.
Là ou je coince, c'est la partie authentification pour M3 qui utilise OAuth2 pour sécuriser l'application.
Je dois dans un premier temps récupérer un token qui me permettra ensuite de lancer le webservice et d'être autorisé à le faire.
J'arrive à lancer le webservice depuis SOAPUI sans soucis.
En regardant les logs, je vois bien qu'il y a un appel POST (récupération du token) et un autre GET (Appel du webservice).
Partant de ce principe, j'ai tenté d'utiliser HTTPPOSTCLOB pour récupérer le token.
Lorsque je souhaite le faire depuis l'IBM i, je rencontre un problème car j'ai le message :
"SQL Error [38000]: [SQL4302] Abandon de la proc. stockée ou fonction UDF Java SYSTOOLS.HTTPPOSTCLOB, nom spécifique HTTPP00013. Exception : com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: The certificate issued by SERIALNUMBER=<numéro_de_serie>, CN=TST-Grid is not trusted; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error."
J'ai l'impression que le certificat de l'application n'est pas reconnu.
Est-ce que l'un d'entre vous a déjà rencontré ce problème ?
Merci pour votre aide
Webservices avec Oauth2
(sans sujet)
Bonjour,
oui, il faut que les autorités de certification soient connues du runtime Java qui implémente les fonctions HTTP* de SQL.
Vous pouvez regarder la documentation suivante : https://www.ibm.com/developerworks/comm ... _udtfs.pdf
au chapitre "Using a truststore and keystore for SSL"
oui, il faut que les autorités de certification soient connues du runtime Java qui implémente les fonctions HTTP* de SQL.
Vous pouvez regarder la documentation suivante : https://www.ibm.com/developerworks/comm ... _udtfs.pdf
au chapitre "Using a truststore and keystore for SSL"
Nathanaël
(sans sujet)
Bonjour,
le lien vers la doc Volubis qui explique pas à pas comment ajouter un certificat dans le magasin de certificats de Java (il faut juste adapter la version de java).
http://www.volubis.fr/af4dir/courshtm/w ... ent73.html
Attention, il faut récupérer le certificat "racine" et le certificat "intermédiaire".
Cordialement.
le lien vers la doc Volubis qui explique pas à pas comment ajouter un certificat dans le magasin de certificats de Java (il faut juste adapter la version de java).
http://www.volubis.fr/af4dir/courshtm/w ... ent73.html
Attention, il faut récupérer le certificat "racine" et le certificat "intermédiaire".
Cordialement.
(sans sujet)
Si je comprends bien, il faut d'abord que je récupère le certificat utilisé par M3 pour le copier sur l'IBM i.
Je vais tente de le faire et je vous tiens au courant.
Merci
Je vais tente de le faire et je vous tiens au courant.
Merci
(sans sujet)
Bonjour,
Ça fonctionne mieux depuis que j'ai intégré le certificat de l'ERP.
J'ai réussi à passer la première étape qui consiste à récupérer le token.
Là je coince sur l'appel du webservice qui est sous la forme :
WITH t_Authorization AS (
SELECT CAST('
<httpHeader>
<header name="Authorisation" value="Bearer <token_récupéré>"/>
<header name="content-type" value="application/json"/>
<header name="Accept-Encoding" value="UTF-8"/>
<header name="accept" value="application/json"/>
</httpHeader>' AS varchar(2048) CCSID 1208) AS Authorization_Identity
FROM SYSIBM.SYSDUMMY1
)
SELECT systools.httpgetclob('https://<URL_webservice>',
CAST(Authorization_Identity AS clob(10k)))
from t_Authorization;
J'ai une erreur http 401 unauthorized
Lorsque je lance la méthode GET depuis SOAPUI avec les mêmes paramètres et le token que j'ai récupéré précédemment depuis l'IBM i ça fonctionne.
Quelqu'un aurait une idée de ce qui peut créer le dysfonctionnement ?
Merci pour votre aide
Ça fonctionne mieux depuis que j'ai intégré le certificat de l'ERP.
J'ai réussi à passer la première étape qui consiste à récupérer le token.
Là je coince sur l'appel du webservice qui est sous la forme :
WITH t_Authorization AS (
SELECT CAST('
<httpHeader>
<header name="Authorisation" value="Bearer <token_récupéré>"/>
<header name="content-type" value="application/json"/>
<header name="Accept-Encoding" value="UTF-8"/>
<header name="accept" value="application/json"/>
</httpHeader>' AS varchar(2048) CCSID 1208) AS Authorization_Identity
FROM SYSIBM.SYSDUMMY1
)
SELECT systools.httpgetclob('https://<URL_webservice>',
CAST(Authorization_Identity AS clob(10k)))
from t_Authorization;
J'ai une erreur http 401 unauthorized
Lorsque je lance la méthode GET depuis SOAPUI avec les mêmes paramètres et le token que j'ai récupéré précédemment depuis l'IBM i ça fonctionne.
Quelqu'un aurait une idée de ce qui peut créer le dysfonctionnement ?
Merci pour votre aide
(sans sujet)
Je viens de trouver mon erreur :
avec Authorization au lieu de Authorisation ça fonctionne un peu mieux
WITH t_Authorization AS (
SELECT CAST('
<httpHeader>
<header name="Authorization" value="Bearer <token_récupéré>"/>
<header name="content-type" value="application/json"/>
<header name="Accept-Encoding" value="UTF-8"/>
<header name="accept" value="application/json"/>
</httpHeader>' AS varchar(2048) CCSID 1208) AS Authorization_Identity
FROM SYSIBM.SYSDUMMY1
)
SELECT systools.httpgetclob('https://<URL_webservice>',
CAST(Authorization_Identity AS clob(10k)))
from t_Authorization;
Merci pour votre aide
avec Authorization au lieu de Authorisation ça fonctionne un peu mieux
![Very Happy :D](./images/smilies/icon_biggrin.gif)
WITH t_Authorization AS (
SELECT CAST('
<httpHeader>
<header name="Authorization" value="Bearer <token_récupéré>"/>
<header name="content-type" value="application/json"/>
<header name="Accept-Encoding" value="UTF-8"/>
<header name="accept" value="application/json"/>
</httpHeader>' AS varchar(2048) CCSID 1208) AS Authorization_Identity
FROM SYSIBM.SYSDUMMY1
)
SELECT systools.httpgetclob('https://<URL_webservice>',
CAST(Authorization_Identity AS clob(10k)))
from t_Authorization;
Merci pour votre aide