Erreur “New token is expired” lors de la consommation d’objet service-simplicite (le retour)

Je pense avoir - enfin - cerné un cas particulier où on peut avoir le comportement décrit !

Cela peut arriver si l’URL token info de l’IdP (qu’on appelle pour vérifier le token externe passé) ne fournit pas une info qui permet de déterminer la date d’expiration du token ou si le paramétrage ne permet pas de déterminer quel attribut contient cette info => par défaut on cherche un attribut exp = date d’expiration ou, à defaut, un attribut expires_in = durée avant expiration mais si c’est un autre nommage il y a besoin de préciser explicitement lequel

Or, en fallback, on considère que la date d’expiration du token est = à la date de l’appel.
Du coup ce 1er appel passe (car l’expiration est bien >= à la date de la requête, = en l’occurrence)

L’appel suivant ne passe pas (car cette fois la date d’expiration du token mis en cache est < à la date de la requête) et ça finit en erreur “Expired token”, et Simplicité supprime ce token de son cache.

L’appel suivant se passe comme le 1er appel (car vu de Simplicité c’est un nouveau token) et ainsi de suite…

Dans la révision 5.1.32 on a ajouté un warning pour signaler ce cas où on a utilisé en fallback la date courante pour la date d’expiration => si vous êtes bien dans ce cas particulier là on le verra dans les logs (et il faudra alors regarder de près ce que renvoie l’URL token info pour mettre en place le mapping qui va bien)

Sinon, dans cette révision on a aussi backporté (depuis la 5.2) le décodage+validation du token JWT en alternative à sa validation par appel de l’URL de token info. La date d’expiration étant autoportée dans le token JWT il n’y a plus de pb => dans votre cas il vaudrait sans doute mieux basculer sur ce mode de vérification du token (si vos tokens sont bien des tokens JWT)

Cette révision 5.1.32 a été mise à disposition ce soir. Après upgrade il faudra regarder de près vos logs pour déterminer la bonne configuration (sans oublier de commencer par inhiber ou supprimer le OAUTH2_PROVIDER qui ne peut que créer des problèmes). Si besoin en passant le log event DAUTHCS001 à Info pour avoir plus de détails.

Bonjour,
Nous continuons à travailler sur l’instance de DEV.
La version 5.1.32 a été installée:

[Platform]
Status=OK
Version=5.1.32
BuiltOn=2022-03-02 21:42
Git=release/5c147877ece7470c6b2dfade768e1d945c8dc1ed
Encoding=UTF-8
EndpointIP=172.20.177.109
EndpointURL=http://mla-api-d9d48498d-64ww9:8080
TimeZone=Europe/Paris
SystemDate=2022-03-03 11:02:45

[Application]
ApplicationVersion=0.10
ContextPath=
ContextURL=https://api-mla.gke.dev.gcp.renault.com
ActiveSessions=6
TotalUsers=29
EnabledUsers=10
LastLoginDate=2022-03-03 10:59:13

Les paramètres ont été mis à jour comme convenu:

Le problème persiste:

2022-03-03 10:59:12,217|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|params||Root:
    Location: /api/ext/MlaAPIService/aftersales-items
    Simple parameters:
     referenceNumber = [0000000095]
    Multiple parameters:
     referenceNumber = [0000000095]
    Document parameters:
    Method: GET
    Content type: application/octet-stream
    Charset:
    User agent: PostmanRuntime/7.29.0
    Session ID: 6E6B6012293C8AF3CE25B256C2F6DBD6
    Headers:
     postman-token = b2f2907c-9aa8-43b3-be8c-13fd1d0f93f5
     x-dynatrace-origin-url = http://app-mla.gke.dev.gcp.renault.com/items/v1/aftersales-items?referenceNumber=0000000095
     x-renault-apigee-origin-url = https://apis-dev.tls.renault.com/mla/items/v1
     x-forwarded-port = 443
     x-dynatrace-application = 1%3B1%3Bcb837360f26de12d
     authorization = Bearer eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiI5MDMwOTVhMS04NDM2LTQxZTItOTVmMi05YzhiZDAzNGEzZDgiLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMDI3NjIsImlhdCI6MTY0NjMwMDk2MiwibmJmIjoxNjQ2MzAwOTMyLCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IlZCblJkbVVYVmxMbGNGcmVpM1ZJVHhFZ29MWSt0dFkrMEhqZC8wVjAvQW40SXMyME1FOVZhZFZJVFJ3QzA0TU9udkFNeGcraUM2dE5heFdwWFQvb0RxMDRncmswYmNDQ2xYQTRvNjFjQVpSOGZlSXN4ZXdiQ0dKamkwRWNRNmpUeGpHNEp1R0dkTnVOWHJ5cndpbnB0UEYyTE5rTnF4RmYzVGlzd0FjNjI3OG9ETml0eFNJTk5LemloRUc0c01TMzRtZ1JvZDdHaUd6UWNxMkpLaGVzV1NUUTVaNjNaeEFxamVpMkNLdlRjWDY4OHdMY3pPSTFQQmN3dldxSUltdjFCQzdZZW4xa3o0NVFFUE13MHpwSERuaUU2eFhhUkgzTExMMjE1L1JJbjZSNDFCWlZQS3A4ZlEyRXVZUENHTWVEaVo1ZUJpSjhRN0ZzYTQrdWk2YjQwRmtvY2tnRXg5SE5ka0xPbk5YVkFETmJXdHNQVzNCVTVjVnVCSFZTSFNqRldCYUFnRzg0emx2Nmg0MUJnZmR2U2xUTE9TYUF3cmF0TVpRSyt0aWhLZWZ2UGx2b2FvOFA4UlJxWml0Vk8vSXExRUx6T0lTVG9QcStLREVVYnNYM29Ka0Nsc01tNGh2TnREcFRldksyV0RpWU05ekg5TUtCVHhWUklhV0pjbTQxRFQ2TXMwaFBpcFBXbi9TUWxSZXdZT2czS2FSWjRoakI1ZEZOblFYNFlobz0uMiIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.A5uSUQg1TyUj_DlGF8M46Gfkh9tT2Ke2qtcRc3iBIoHgkrCl3pCyip5-e7zKp-D-F62OVKwxe0xmrst1Lalr2g9D98qTXH4THTUNjil6KKZTGOttr379DQWeyLm0FZ4qSWw7hQHuL0lSQWs0LxgLKkjqPBftERQH6WJVlIcvPOJpqS0Jq-37Uy-CR5OfvuSneSdURlxhx0PtrHXpFGHx_evECTzcGetDz4mS6ToPRoz9cj5xAINTjMt5qSm3pqwyS_nN35Hh3cYlY-mSSepK8KmA7_ANVrIDQ4Vso9hRCY8snoX2pKdqTtNFTefO0tGr9OJkkj1MAwHEbA0_pOembA
     x-renault-apigee-accesstoken = eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiI1ZmIzZmRkMC05MzNkLTRlNTYtYjgxYi1kZGI4NmFkNzdhNjciLCJhdWQiOiI2OTVlNGUzZi0zYzI1LTRkZGUtOTlkNS1iMWU0NGFlNzE4NGIiLCJleHAiOjE2NDYzMDIyMzgsImlhdCI6MTY0NjMwMDQzOCwibmJmIjoxNjQ2MzAwNDA4LCJzdWIiOiIzNTM1MzYzNzY0NjMzMDMxMmQ2MTY2NjIzNjMxMzE2NTYxMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IlBhRTE1aEVoR0lYcWRsUXpxZ1V3Ym1rWTYyWDN6NExHNzk1N2tJSG8ySno4ZEd4Y0ZjcEpPeFlZME0rZDAyU1BLMEdQSDZrVTFQMUlEbnFJRWt3NVpXWElWdGFEOThBSFVnUGlVUHZSdXluc0tQS2RTYUhtMXF5VUoxNldRWWptSUNDREdETlZPMGFmWHNwWmFEdUJ1eGJBWFBrbDR4aEIvS1JFQ3l6dk5oNmFwVXdQWmFwM3ljSjkvZTRTMlYxREVibWpPL1U4RnI5Q1BmdXNDU2lDazhTWXk3a2tCbTVuNUlqQTBjVFhodnArT0NRME5HY1cyUk5mTTB4YVpZMXpXNDBhbm1mRFNFTm5EekRQNi81TVRhR0RQTnZZMTU5ZFhPampJdHBrb1MrNmJVaUR5STJWRW16RTFxcUU3bll6eVozdnF5dHBOVVVGbEZZTCtPampTZW1IaGJEblp3TUJFYUtXcFdjbHhYQWF6cFhENUIyRXl3Q0luVHpDNERrTHFoRERzRXAwOVEwZ09GZEE3VjNabUlvTnZTZUtheWJRVFB0bmE3YVNjdFl4ZDd3MkxvQ1JMRWtSb0k1bDl6TmczUVQ1Vks0Q01leWR3QU5rV0N2bmhSNVFKQnM1ZnhuRUllT2ZFLzZaVGZ5QWFZaGg0cUVldWtBMjZHcTRJMlRQTDYzQlJGbG40U1JLZXJ6SzEvVzhoUXo5bllQYUtOQVQyS1lwK2VzcTJoWT0uMyIsInNjb3BlIjpbImFyY2EiLCJ1cm46bmV0aXEuY29tOm5hbTpzY29wZTpvYXV0aDpyZWdpc3RyYXRpb246cmVhZCJdLCJ1aWQiOiJhd2FwaTEzIiwiZmlyc3RuYW1lIjoiSXJuLTY2MzY2IiwidXNlckRpcmVjdG9yeSI6ImFyY2EiLCJwb3N0T2ZmaWNlQm94IjoiRlJFUVZOT1YzODAiLCJwcmVmZXJyZWRMYW5ndWFnZSI6IkVOIiwiY29zdENlbnRlciI6IkFBNTA2MTUiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTGFtYmEtQXBpZ2VlLU5vbnByb2QiLCJfdGFyZ2V0IjoiSWRlbnRpdHlQcm92aWRlciJ9.n_znHg3htKOm3hkwNeK8pEa82R1qIJmII6jIFhcrCJ-4ys9IjTNRVVHI6ZUDPOIQ1sa-aQy3NgeylDimOO0DXIPwSH_q_3mr__35QjshenZ7VB_VCPx1vYpuYZxj6e4mKo3STlr53Qpmik5ryqXXofco0fSN7sl7KR3wuu8F4jZQMfEVHuhVa3_CWpFeiBfSgBk70fXPvT6tbCka4hHsUsy1o1GRjR-JHWxs9PA2GuBHrA19bTDoJZ7dH8g4RKIBpHdnhUIPGxIPnefF8ZIMleqL043e-j3TiWMBtoxn5-nZ3dWdMLwxkQboU-sNCC3UjsRdNE4YT0rKy1Ebe8a37Q
     tracestate = df7e75b2-98001bdc@dt=fw4;34;3dee534b;48e;3;0;0;15e;b3ee;2h01;3h3dee534b;4h048e;5h01;7h4a946b765b350ccb
     x-forwarded-host = app-mla.gke.dev.gcp.renault.com
     host = app-mla.gke.dev.gcp.renault.com
     connection = upgrade
     x-request-id = 37a9585d436d59cbceedce7d27502609
     x-dynatrace-requeststate = agentId=0xacc46eef3dee534b&pathDepth=1
     x-forwarded-proto = https
     cookie = JSESSIONID=6E6B6012293C8AF3CE25B256C2F6DBD6
     x-alliance-apigeedevapp = RNLT-IRN-70907-MLA-AS-ABC-1395
     x-ruxit-forwarded-for = 34.255.130.155
     x-forwarded-for = 34.255.130.155, 10.144.56.195
     accept = */*
     x-real-ip = 10.144.56.195
     x-forwarded-scheme = https
     x-original-forwarded-for = 138.21.12.29
     x-renault-apigee-traceid = rrt-0dfc61180f9e0f4d1-b-eu-24603-178110561-1
     traceparent = 00-1ae7e0f0f6b6ec2a30d47e0d6cfa8080-4a946b765b350ccb-01
     x-certifcate-uid = awmla01
     x-dynatrace = FW4;-1744823332;52;1039029067;1166;3;-545360462;350;a29a;2h01;3h3dee534b;4h048e;5h01;6h1ae7e0f0f6b6ec2a30d47e0d6cfa8080;7h4a946b765b350ccb
     x-scheme = https
     accept-encoding = gzip,deflate
     user-agent = PostmanRuntime/7.29.0
2022-03-03 10:59:12,217|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|init||DEBUT
2022-03-03 10:58:21,551|SIMPLICITE|ERROR||http://mla-api-d9d48498d-64ww9:8080||ERROR|system|com.simplicite.webapp.servlets.api.ExternalObjectServlet|service||Authentication error: ERR_EXPIRED_TOKEN

J’ai bien compris votre propos sur IDP et “OAUTH2_TOKENINFO_URL renault”
Je n’ai pas vu de warning dans les logs concernant le cas que tu évoques.

Pour finir, je précise que ce comportement, nous l’avons constaté sur tous nos environnements et que ça a été corrigé par un retour arrière sur la 5.1.22. On a l’impression qu’il y a eu un changement qui provoque cela, s’appuyant possiblement sur une mauvaise conf globale.

cdt

Il faudrait vérifier dans les logs serveur Simplicité si un warning Unable to get the token expiry date from the token info est présent dans les logs.

Si oui c’est qu’on est bien dans ce cas et qu’il va juste falloir trouver la bonne configuration vs ce que contient le token info en regardant de près ce que renvoie l’appel à l’URL token info de l’IdP

Si non c’est peut être un autre cas particulier qu’il va falloir investiguer.

Dans tous les cas merci de passer le log event DAUTHCS001 à Information + rechargement des log events :

NB: je précise au passage que ce log event ne doit jamais être laissé en permanence au niveau Information, il sert uniquement à debugger ponctuellement les pbs d’authentification.

Et merci de nous fournir l’ensemble des logs serveur SImplicité liées à l’appel API qui marche et à celui qui aboutit à cette erreur => je veux dire pas juste la trace d’erreur de celui qui dit que le token est expiré car c’est la conséquence finale du pb mais ça ne donne strictement aucune piste pour en cerner la cause.

PS: après upgrade et avant de tester les appels, pour repartir sur des bases saines il faudrait aussi supprimer tous les tokens persistants résiduels s’il y en a:

Bonjour,
User tokens supprimé

  • Users tokens intégralement supprimés

  • Paramètre DAUTH passé à “information”

  • 3 appels faits avec le même token (2 OK avec un fail au milieu)

2022-03-03 15:51:14,119|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|params||Root:
    Location: /api/ext/MlaAPIService/aftersales-items
    Simple parameters:
     referenceNumber = [0000000095]
    Multiple parameters:
     referenceNumber = [0000000095]
    Document parameters:
    Method: GET
    Content type: application/octet-stream
    Charset:
    User agent: PostmanRuntime/7.29.0
    Session ID: 6E6B6012293C8AF3CE25B256C2F6DBD6
    Headers:
     postman-token = d4c0e7c6-c34b-44a7-9742-3bf42cdeb374
     x-dynatrace-origin-url = http://app-mla.gke.dev.gcp.renault.com/items/v1/aftersales-items?referenceNumber=0000000095
     x-renault-apigee-origin-url = https://apis-dev.tls.renault.com/mla/items/v1
     x-forwarded-port = 443
     x-dynatrace-application = 1%3B1%3Bcb837360f26de12d
     authorization = Bearer **eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiJiZjIzMGM2Ni02ZDdkLTRkNjItYmIzYS03NTk2MjFiODhlOTciLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMjA2MTUsImlhdCI6MTY0NjMxODgxNSwibmJmIjoxNjQ2MzE4Nzg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6InczZjhwNGY2d1dBWm1lRFlKd2I1blpMTnZJT3BGZzlic3UvVE5ZNDJEZi9DQlU3YjBsRzVaTytleTJaYmF1QktIeXJUOUp1bDdnSlZRS1RmMklwczd4aG5nMVUyVG5JRGpNVUl4MTRVSldpaVFHVWtvTUo4ZEx1OWVmdFhjUFNSSi9WZ0F4NWJrS0xKQVdRUlpudERNSS8xK2lXWUhXNWhELzE3aHQwa2ZzSkJ2NzhncnJyMnRUcHZDTGJPQXp2elozUnY0anV4WGZHRUducTFsWU5WTjhEb2VhVEpDR05ibTZiVTZrcW41OGszc0dudjVIOCtxVkNsUGxnSjhha3ZMQTFvMW53dWdkamRvSUIzb2Uyc3p3ZWdDNCtVT3dMVzQxSWNGS08yMVpoM3VVU2UyVTNkQk15bWVwZ2JmUFA4SzZKWVNDRmYrenhOSjIrZVFUTHNpOGFoZDdtZHA0aW5QUUluSHZabENTY2taV0JVSTVQVjVEUmJrQ083Y2dXb2Z1MUxYcVlGTGZ2dU1BeXRqMjlaa2Iwa3ZINXZ4VjVvWEo0bFdXSDF4MER5TlJTeUJJek9GT1dZRzlqaW1XSFlHK3A2TjAyZHhxRUZNNC92N3ZIeWZGNVB6RkI2RmNibVlJcWtHRjVKNjgzSVNJbU5MTlFXZDBkVmdsTE1rdVFSQnRqU2p2SG9lZTBiTUhibmlVeVFXQWo0cGNOYjhZNmZid202TlBjdHhSUT0uOCIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.ege-ME7neJRaGSr0m_0H1knxhBeBRbIbhPfzYz2CC-CY2is0uxlLpt9dBJnaTouVTNLzBI1_lrObkHZfVm_LnWZN1j01_oIDqiyHEixQRo27lSmzUnHmc4HK6VWxhaHiiNjAOhW6B56_6kjWrBgPBoVQWEl6Dw9zLOMVBxbO3aZZ2urBuxEcTnAnTrRFIQ0bv4v_Vc6hxTC_mnGJ3i9DcnKF0w37psUgSoBIzNPQEcnj1Kw6uTum5Oz05mHmNA9r358gSgoRKbH6kpCyQZSaiDV-IEl5AASOfJyeF3oV6Q7INk4H5ytgiFtOmw4029Ugrfb1s4-VQFlLLjrTwGzXZA**
     x-renault-apigee-accesstoken = eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiIxOTQ5NWQ5Mi1hZDYwLTQyM2EtOWEzZi0wMzg4YjA3YjlmNmYiLCJhdWQiOiI2OTVlNGUzZi0zYzI1LTRkZGUtOTlkNS1iMWU0NGFlNzE4NGIiLCJleHAiOjE2NDYzMjAyMzcsImlhdCI6MTY0NjMxODQzNywibmJmIjoxNjQ2MzE4NDA3LCJzdWIiOiIzNTM1MzYzNzY0NjMzMDMxMmQ2MTY2NjIzNjMxMzE2NTYxMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IjFRZmlSQ0RTQ29SYjlvbEdOQlh4Uks0SEgybjdJTGFXU0RDVGNVUE1jN2VMSlNpVU5mK2VvRTlPSFhqRmpwUXlWZCsrbm5tbTNVRzd0cFdoYU5sQy94dFQ2WCtzRzVQcjlCbyt4WGJQYk12MkxUNTNlZi9nMGhDWjhGbEJ3bEo5dmtMV09WZDllSFJ5R0JkOVhRSnkvYytiRHZjN25pdlk3L1N2S1ByTzdJd2J2cWNta1BZS2k0eXkxbW1YbWxyZEdqbDg1N2JYNElSN0t4dnVtN0YxQVVxcXBmYnJmcVRRRHRoQWZ6N2RzU3BaUThvZjVkMTdvVndwaXZ4aUpVTHR4YjdtQUZuclRKRi8rc3JQN0x5V0pyU3I4a1RnRElhaUozWDhDYmVUQk4vREtRSVVyUUV0OHl6OWJLcXdXNFhSU2xQSHBkMzlrOUJDNjNRVFJCVGZSaXYvRE1KenozRGp6NnhZTGZaWU1XdkhsT3lhMHRIMk1td21JVmRBUUdIK3BGU0dNWE8vT3ZJcTFLWnBidDQxN0xzUEpielgrMnM1K2o4TU1NMmVMeTFQTW56SjQxV1Y0RS9GenM2UmdEZmhhRGViQmdXZHkrMWtFekpBUlRVcDlwYUl2dllTS3h1dFp2MTdGNEJ1Wm9sUWM2QnpWb3VxNVVNSUE0OGh3TEhVbCtyaTIxM0hTTENqZ3U2c25ERnVZVmVsTkFBbERLRm4zN2RwSklmU0xjST0uNCIsInNjb3BlIjpbImFyY2EiLCJ1cm46bmV0aXEuY29tOm5hbTpzY29wZTpvYXV0aDpyZWdpc3RyYXRpb246cmVhZCJdLCJ1aWQiOiJhd2FwaTEzIiwiZmlyc3RuYW1lIjoiSXJuLTY2MzY2IiwidXNlckRpcmVjdG9yeSI6ImFyY2EiLCJwb3N0T2ZmaWNlQm94IjoiRlJFUVZOT1YzODAiLCJwcmVmZXJyZWRMYW5ndWFnZSI6IkVOIiwiY29zdENlbnRlciI6IkFBNTA2MTUiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTGFtYmEtQXBpZ2VlLU5vbnByb2QiLCJfdGFyZ2V0IjoiSWRlbnRpdHlQcm92aWRlciJ9.qTDUnCY-S3Axs8Ed94rbzw0wUgXXPvAcs5KZWtxCOfPwpibiL_poC2VOknyUsWaxVgXDuGC2Ij9pEpfI6fwjMRxulCr31JdsXDaR7deirK6Ia6dvozhGUyud6PWOHa1KMqGoek4F8Eq3IuYDPoEpuHbo8fGTgTbsHcq2p_uiX5DAIO6DfVZ-VdBwNxHmM7EeQlFi--p5Z0JTYERWoLITaDeEdS2l5hujnZZ13UQmL-4MW9C3IoEn3oeoCyzxwW8glaPOttp0Duchk1ISUGew0FtiMT2k-r5R7rlHO6t_IJlfybMyY8IbejIOKKsaoTOTkGKnCgsAgfwqVWeqUbc5zw
     tracestate = df7e75b2-98001bdc@dt=fw4;35;3dee534b;25e6;3;0;0;18a;d318;2h01;3h3dee534b;4h25e6;5h01;7h4b9a0236a341cca0
     x-forwarded-host = app-mla.gke.dev.gcp.renault.com
     host = app-mla.gke.dev.gcp.renault.com
     connection = upgrade
     x-request-id = e01bbcdb259a1ad183cc82f620a03b76
     x-dynatrace-requeststate = agentId=0xacc46eef3dee534b&pathDepth=1
     x-forwarded-proto = https
     cookie = JSESSIONID=6E6B6012293C8AF3CE25B256C2F6DBD6
     x-alliance-apigeedevapp = RNLT-IRN-70907-MLA-AS-ABC-1395
     x-ruxit-forwarded-for = 34.255.105.173
     x-forwarded-for = 34.255.105.173, 10.144.57.4
     accept = */*
     x-real-ip = 10.144.57.4
     x-forwarded-scheme = https
     x-original-forwarded-for = 138.21.12.29
     x-renault-apigee-traceid = rrt-0dfc61180f9e0f4d1-b-eu-24603-179515105-1
     traceparent = 00-661b4e081f32ada2865f66ef1e4d0202-4b9a0236a341cca0-01
     x-certifcate-uid = awmla01
     x-dynatrace = FW4;-1744823332;53;1039029067;9702;3;-545360462;394;2092;2h01;3h3dee534b;4h25e6;5h01;6h661b4e081f32ada2865f66ef1e4d0202;7h4b9a0236a341cca0
     x-scheme = https
     accept-encoding = gzip,deflate
     user-agent = PostmanRuntime/7.29.0
2022-03-03 15:51:14,118|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|init||DEBUT
2022-03-03 15:51:13,900|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Instantiate Grant for login = [awmla01] and scope = []
2022-03-03 15:51:13,900|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Login from token info = [awmla01]
2022-03-03 15:51:13,900|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Token info response = [{"scope":["arca"],"issuer":"https://idp2.renault.com/nidp/oauth/nam","audience":"13807f70-719f-427e-8690-c8794e15256e","expires_in":1541,"token_id":"bf230c66-6d7d-4d62-bb3a-759621b88e97","user_id":"awmla01"}]
2022-03-03 15:51:13,729|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Token from HTTP request = [eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiJiZjIzMGM2Ni02ZDdkLTRkNjItYmIzYS03NTk2MjFiODhlOTciLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMjA2MTUsImlhdCI6MTY0NjMxODgxNSwibmJmIjoxNjQ2MzE4Nzg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6InczZjhwNGY2d1dBWm1lRFlKd2I1blpMTnZJT3BGZzlic3UvVE5ZNDJEZi9DQlU3YjBsRzVaTytleTJaYmF1QktIeXJUOUp1bDdnSlZRS1RmMklwczd4aG5nMVUyVG5JRGpNVUl4MTRVSldpaVFHVWtvTUo4ZEx1OWVmdFhjUFNSSi9WZ0F4NWJrS0xKQVdRUlpudERNSS8xK2lXWUhXNWhELzE3aHQwa2ZzSkJ2NzhncnJyMnRUcHZDTGJPQXp2elozUnY0anV4WGZHRUducTFsWU5WTjhEb2VhVEpDR05ibTZiVTZrcW41OGszc0dudjVIOCtxVkNsUGxnSjhha3ZMQTFvMW53dWdkamRvSUIzb2Uyc3p3ZWdDNCtVT3dMVzQxSWNGS08yMVpoM3VVU2UyVTNkQk15bWVwZ2JmUFA4SzZKWVNDRmYrenhOSjIrZVFUTHNpOGFoZDdtZHA0aW5QUUluSHZabENTY2taV0JVSTVQVjVEUmJrQ083Y2dXb2Z1MUxYcVlGTGZ2dU1BeXRqMjlaa2Iwa3ZINXZ4VjVvWEo0bFdXSDF4MER5TlJTeUJJek9GT1dZRzlqaW1XSFlHK3A2TjAyZHhxRUZNNC92N3ZIeWZGNVB6RkI2RmNibVlJcWtHRjVKNjgzSVNJbU5MTlFXZDBkVmdsTE1rdVFSQnRqU2p2SG9lZTBiTUhibmlVeVFXQWo0cGNOYjhZNmZid202TlBjdHhSUT0uOCIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.ege-ME7neJRaGSr0m_0H1knxhBeBRbIbhPfzYz2CC-CY2is0uxlLpt9dBJnaTouVTNLzBI1_lrObkHZfVm_LnWZN1j01_oIDqiyHEixQRo27lSmzUnHmc4HK6VWxhaHiiNjAOhW6B56_6kjWrBgPBoVQWEl6Dw9zLOMVBxbO3aZZ2urBuxEcTnAnTrRFIQ0bv4v_Vc6hxTC_mnGJ3i9DcnKF0w37psUgSoBIzNPQEcnj1Kw6uTum5Oz05mHmNA9r358gSgoRKbH6kpCyQZSaiDV-IEl5AASOfJyeF3oV6Q7INk4H5ytgiFtOmw4029Ugrfb1s4-VQFlLLjrTwGzXZA]
**2022-03-03 15:51:10,305|SIMPLICITE|ERROR||http://mla-api-d9d48498d-64ww9:8080||ERROR|system|com.simplicite.webapp.servlets.api.ExternalObjectServlet|service||Authentication error: ERR_EXPIRED_TOKEN**
2022-03-03 15:51:10,303|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Token from HTTP request = [eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiJiZjIzMGM2Ni02ZDdkLTRkNjItYmIzYS03NTk2MjFiODhlOTciLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMjA2MTUsImlhdCI6MTY0NjMxODgxNSwibmJmIjoxNjQ2MzE4Nzg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6InczZjhwNGY2d1dBWm1lRFlKd2I1blpMTnZJT3BGZzlic3UvVE5ZNDJEZi9DQlU3YjBsRzVaTytleTJaYmF1QktIeXJUOUp1bDdnSlZRS1RmMklwczd4aG5nMVUyVG5JRGpNVUl4MTRVSldpaVFHVWtvTUo4ZEx1OWVmdFhjUFNSSi9WZ0F4NWJrS0xKQVdRUlpudERNSS8xK2lXWUhXNWhELzE3aHQwa2ZzSkJ2NzhncnJyMnRUcHZDTGJPQXp2elozUnY0anV4WGZHRUducTFsWU5WTjhEb2VhVEpDR05ibTZiVTZrcW41OGszc0dudjVIOCtxVkNsUGxnSjhha3ZMQTFvMW53dWdkamRvSUIzb2Uyc3p3ZWdDNCtVT3dMVzQxSWNGS08yMVpoM3VVU2UyVTNkQk15bWVwZ2JmUFA4SzZKWVNDRmYrenhOSjIrZVFUTHNpOGFoZDdtZHA0aW5QUUluSHZabENTY2taV0JVSTVQVjVEUmJrQ083Y2dXb2Z1MUxYcVlGTGZ2dU1BeXRqMjlaa2Iwa3ZINXZ4VjVvWEo0bFdXSDF4MER5TlJTeUJJek9GT1dZRzlqaW1XSFlHK3A2TjAyZHhxRUZNNC92N3ZIeWZGNVB6RkI2RmNibVlJcWtHRjVKNjgzSVNJbU5MTlFXZDBkVmdsTE1rdVFSQnRqU2p2SG9lZTBiTUhibmlVeVFXQWo0cGNOYjhZNmZid202TlBjdHhSUT0uOCIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.ege-ME7neJRaGSr0m_0H1knxhBeBRbIbhPfzYz2CC-CY2is0uxlLpt9dBJnaTouVTNLzBI1_lrObkHZfVm_LnWZN1j01_oIDqiyHEixQRo27lSmzUnHmc4HK6VWxhaHiiNjAOhW6B56_6kjWrBgPBoVQWEl6Dw9zLOMVBxbO3aZZ2urBuxEcTnAnTrRFIQ0bv4v_Vc6hxTC_mnGJ3i9DcnKF0w37psUgSoBIzNPQEcnj1Kw6uTum5Oz05mHmNA9r358gSgoRKbH6kpCyQZSaiDV-IEl5AASOfJyeF3oV6Q7INk4H5ytgiFtOmw4029Ugrfb1s4-VQFlLLjrTwGzXZA]
2022-03-03 15:50:48,239|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|params||Root:
    Location: /api/ext/MlaAPIService/aftersales-items
    Simple parameters:
     referenceNumber = [0000000095]
    Multiple parameters:
     referenceNumber = [0000000095]
    Document parameters:
    Method: GET
    Content type: application/octet-stream
    Charset:
    User agent: PostmanRuntime/7.29.0
    Session ID: 6E6B6012293C8AF3CE25B256C2F6DBD6
    Headers:
     postman-token = a3992f70-e95b-4c7a-8bca-991b27e088b1
     x-dynatrace-origin-url = http://app-mla.gke.dev.gcp.renault.com/items/v1/aftersales-items?referenceNumber=0000000095
     x-renault-apigee-origin-url = https://apis-dev.tls.renault.com/mla/items/v1
     x-forwarded-port = 443
     x-dynatrace-application = 1%3B1%3Bcb837360f26de12d
     authorization = Bearer eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiJiZjIzMGM2Ni02ZDdkLTRkNjItYmIzYS03NTk2MjFiODhlOTciLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMjA2MTUsImlhdCI6MTY0NjMxODgxNSwibmJmIjoxNjQ2MzE4Nzg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6InczZjhwNGY2d1dBWm1lRFlKd2I1blpMTnZJT3BGZzlic3UvVE5ZNDJEZi9DQlU3YjBsRzVaTytleTJaYmF1QktIeXJUOUp1bDdnSlZRS1RmMklwczd4aG5nMVUyVG5JRGpNVUl4MTRVSldpaVFHVWtvTUo4ZEx1OWVmdFhjUFNSSi9WZ0F4NWJrS0xKQVdRUlpudERNSS8xK2lXWUhXNWhELzE3aHQwa2ZzSkJ2NzhncnJyMnRUcHZDTGJPQXp2elozUnY0anV4WGZHRUducTFsWU5WTjhEb2VhVEpDR05ibTZiVTZrcW41OGszc0dudjVIOCtxVkNsUGxnSjhha3ZMQTFvMW53dWdkamRvSUIzb2Uyc3p3ZWdDNCtVT3dMVzQxSWNGS08yMVpoM3VVU2UyVTNkQk15bWVwZ2JmUFA4SzZKWVNDRmYrenhOSjIrZVFUTHNpOGFoZDdtZHA0aW5QUUluSHZabENTY2taV0JVSTVQVjVEUmJrQ083Y2dXb2Z1MUxYcVlGTGZ2dU1BeXRqMjlaa2Iwa3ZINXZ4VjVvWEo0bFdXSDF4MER5TlJTeUJJek9GT1dZRzlqaW1XSFlHK3A2TjAyZHhxRUZNNC92N3ZIeWZGNVB6RkI2RmNibVlJcWtHRjVKNjgzSVNJbU5MTlFXZDBkVmdsTE1rdVFSQnRqU2p2SG9lZTBiTUhibmlVeVFXQWo0cGNOYjhZNmZid202TlBjdHhSUT0uOCIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.ege-ME7neJRaGSr0m_0H1knxhBeBRbIbhPfzYz2CC-CY2is0uxlLpt9dBJnaTouVTNLzBI1_lrObkHZfVm_LnWZN1j01_oIDqiyHEixQRo27lSmzUnHmc4HK6VWxhaHiiNjAOhW6B56_6kjWrBgPBoVQWEl6Dw9zLOMVBxbO3aZZ2urBuxEcTnAnTrRFIQ0bv4v_Vc6hxTC_mnGJ3i9DcnKF0w37psUgSoBIzNPQEcnj1Kw6uTum5Oz05mHmNA9r358gSgoRKbH6kpCyQZSaiDV-IEl5AASOfJyeF3oV6Q7INk4H5ytgiFtOmw4029Ugrfb1s4-VQFlLLjrTwGzXZA
     x-renault-apigee-accesstoken = eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiIxOTQ5NWQ5Mi1hZDYwLTQyM2EtOWEzZi0wMzg4YjA3YjlmNmYiLCJhdWQiOiI2OTVlNGUzZi0zYzI1LTRkZGUtOTlkNS1iMWU0NGFlNzE4NGIiLCJleHAiOjE2NDYzMjAyMzcsImlhdCI6MTY0NjMxODQzNywibmJmIjoxNjQ2MzE4NDA3LCJzdWIiOiIzNTM1MzYzNzY0NjMzMDMxMmQ2MTY2NjIzNjMxMzE2NTYxMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IjFRZmlSQ0RTQ29SYjlvbEdOQlh4Uks0SEgybjdJTGFXU0RDVGNVUE1jN2VMSlNpVU5mK2VvRTlPSFhqRmpwUXlWZCsrbm5tbTNVRzd0cFdoYU5sQy94dFQ2WCtzRzVQcjlCbyt4WGJQYk12MkxUNTNlZi9nMGhDWjhGbEJ3bEo5dmtMV09WZDllSFJ5R0JkOVhRSnkvYytiRHZjN25pdlk3L1N2S1ByTzdJd2J2cWNta1BZS2k0eXkxbW1YbWxyZEdqbDg1N2JYNElSN0t4dnVtN0YxQVVxcXBmYnJmcVRRRHRoQWZ6N2RzU3BaUThvZjVkMTdvVndwaXZ4aUpVTHR4YjdtQUZuclRKRi8rc3JQN0x5V0pyU3I4a1RnRElhaUozWDhDYmVUQk4vREtRSVVyUUV0OHl6OWJLcXdXNFhSU2xQSHBkMzlrOUJDNjNRVFJCVGZSaXYvRE1KenozRGp6NnhZTGZaWU1XdkhsT3lhMHRIMk1td21JVmRBUUdIK3BGU0dNWE8vT3ZJcTFLWnBidDQxN0xzUEpielgrMnM1K2o4TU1NMmVMeTFQTW56SjQxV1Y0RS9GenM2UmdEZmhhRGViQmdXZHkrMWtFekpBUlRVcDlwYUl2dllTS3h1dFp2MTdGNEJ1Wm9sUWM2QnpWb3VxNVVNSUE0OGh3TEhVbCtyaTIxM0hTTENqZ3U2c25ERnVZVmVsTkFBbERLRm4zN2RwSklmU0xjST0uNCIsInNjb3BlIjpbImFyY2EiLCJ1cm46bmV0aXEuY29tOm5hbTpzY29wZTpvYXV0aDpyZWdpc3RyYXRpb246cmVhZCJdLCJ1aWQiOiJhd2FwaTEzIiwiZmlyc3RuYW1lIjoiSXJuLTY2MzY2IiwidXNlckRpcmVjdG9yeSI6ImFyY2EiLCJwb3N0T2ZmaWNlQm94IjoiRlJFUVZOT1YzODAiLCJwcmVmZXJyZWRMYW5ndWFnZSI6IkVOIiwiY29zdENlbnRlciI6IkFBNTA2MTUiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTGFtYmEtQXBpZ2VlLU5vbnByb2QiLCJfdGFyZ2V0IjoiSWRlbnRpdHlQcm92aWRlciJ9.qTDUnCY-S3Axs8Ed94rbzw0wUgXXPvAcs5KZWtxCOfPwpibiL_poC2VOknyUsWaxVgXDuGC2Ij9pEpfI6fwjMRxulCr31JdsXDaR7deirK6Ia6dvozhGUyud6PWOHa1KMqGoek4F8Eq3IuYDPoEpuHbo8fGTgTbsHcq2p_uiX5DAIO6DfVZ-VdBwNxHmM7EeQlFi--p5Z0JTYERWoLITaDeEdS2l5hujnZZ13UQmL-4MW9C3IoEn3oeoCyzxwW8glaPOttp0Duchk1ISUGew0FtiMT2k-r5R7rlHO6t_IJlfybMyY8IbejIOKKsaoTOTkGKnCgsAgfwqVWeqUbc5zw
     tracestate = df7e75b2-98001bdc@dt=fw4;30;3dee534b;25df;3;0;0;21c;d9a7;2h01;3h3dee534b;4h25df;5h01;7h636527687531ea43
     x-forwarded-host = app-mla.gke.dev.gcp.renault.com
     host = app-mla.gke.dev.gcp.renault.com
     connection = upgrade
     x-request-id = da3baa8ad25470ac99d81274b7b9e6e6
     x-dynatrace-requeststate = agentId=0xacc46eef3dee534b&pathDepth=1
     x-forwarded-proto = https
     cookie = JSESSIONID=6E6B6012293C8AF3CE25B256C2F6DBD6
     x-alliance-apigeedevapp = RNLT-IRN-70907-MLA-AS-ABC-1395
     x-ruxit-forwarded-for = 34.255.105.173
     x-forwarded-for = 34.255.105.173, 10.144.57.241
     accept = */*
     x-real-ip = 10.144.57.241
     x-forwarded-scheme = https
     x-original-forwarded-for = 138.21.12.29
     x-renault-apigee-traceid = rrt-049612f0e92491651-a-eu-427-177093811-1
     traceparent = 00-03e94d08abf253f155839edad3b3449a-636527687531ea43-01
     x-certifcate-uid = awmla01
     x-dynatrace = FW4;-1744823332;48;1039029067;9695;3;-545360462;540;9ae2;2h01;3h3dee534b;4h25df;5h01;6h03e94d08abf253f155839edad3b3449a;7h636527687531ea43
     x-scheme = https
     accept-encoding = gzip,deflate
     user-agent = PostmanRuntime/7.29.0
2022-03-03 15:50:48,238|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||INFO|awmla01|com.simplicite.extobjects.mla_external_object.MlaAPIService|init||DEBUT
2022-03-03 15:50:47,983|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Instantiate Grant for login = [awmla01] and scope = []
2022-03-03 15:50:47,983|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Login from token info = [awmla01]
2022-03-03 15:50:47,983|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Token info response = [{"scope":["arca"],"issuer":"https://idp2.renault.com/nidp/oauth/nam","audience":"13807f70-719f-427e-8690-c8794e15256e","expires_in":1567,"token_id":"bf230c66-6d7d-4d62-bb3a-759621b88e97","user_id":"awmla01"}]
2022-03-03 15:50:47,754|SIMPLICITE|INFO||http://mla-api-d9d48498d-64ww9:8080||DAUTHCS001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Token from HTTP request = [eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiJiZjIzMGM2Ni02ZDdkLTRkNjItYmIzYS03NTk2MjFiODhlOTciLCJhdWQiOiIxMzgwN2Y3MC03MTlmLTQyN2UtODY5MC1jODc5NGUxNTI1NmUiLCJleHAiOjE2NDYzMjA2MTUsImlhdCI6MTY0NjMxODgxNSwibmJmIjoxNjQ2MzE4Nzg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6InczZjhwNGY2d1dBWm1lRFlKd2I1blpMTnZJT3BGZzlic3UvVE5ZNDJEZi9DQlU3YjBsRzVaTytleTJaYmF1QktIeXJUOUp1bDdnSlZRS1RmMklwczd4aG5nMVUyVG5JRGpNVUl4MTRVSldpaVFHVWtvTUo4ZEx1OWVmdFhjUFNSSi9WZ0F4NWJrS0xKQVdRUlpudERNSS8xK2lXWUhXNWhELzE3aHQwa2ZzSkJ2NzhncnJyMnRUcHZDTGJPQXp2elozUnY0anV4WGZHRUducTFsWU5WTjhEb2VhVEpDR05ibTZiVTZrcW41OGszc0dudjVIOCtxVkNsUGxnSjhha3ZMQTFvMW53dWdkamRvSUIzb2Uyc3p3ZWdDNCtVT3dMVzQxSWNGS08yMVpoM3VVU2UyVTNkQk15bWVwZ2JmUFA4SzZKWVNDRmYrenhOSjIrZVFUTHNpOGFoZDdtZHA0aW5QUUluSHZabENTY2taV0JVSTVQVjVEUmJrQ083Y2dXb2Z1MUxYcVlGTGZ2dU1BeXRqMjlaa2Iwa3ZINXZ4VjVvWEo0bFdXSDF4MER5TlJTeUJJek9GT1dZRzlqaW1XSFlHK3A2TjAyZHhxRUZNNC92N3ZIeWZGNVB6RkI2RmNibVlJcWtHRjVKNjgzSVNJbU5MTlFXZDBkVmdsTE1rdVFSQnRqU2p2SG9lZTBiTUhibmlVeVFXQWo0cGNOYjhZNmZid202TlBjdHhSUT0uOCIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.ege-ME7neJRaGSr0m_0H1knxhBeBRbIbhPfzYz2CC-CY2is0uxlLpt9dBJnaTouVTNLzBI1_lrObkHZfVm_LnWZN1j01_oIDqiyHEixQRo27lSmzUnHmc4HK6VWxhaHiiNjAOhW6B56_6kjWrBgPBoVQWEl6Dw9zLOMVBxbO3aZZ2urBuxEcTnAnTrRFIQ0bv4v_Vc6hxTC_mnGJ3i9DcnKF0w37psUgSoBIzNPQEcnj1Kw6uTum5Oz05mHmNA9r358gSgoRKbH6kpCyQZSaiDV-IEl5AASOfJyeF3oV6Q7INk4H5ytgiFtOmw4029Ugrfb1s4-VQFlLLjrTwGzXZA]
  • Token Info
{
    "scope": [
        "arca"
    ],
    "issuer": "https://idp2.renault.com/nidp/oauth/nam",
    "audience": "13807f70-719f-427e-8690-c8794e15256e",
    "expires_in": 595,
    "token_id": "d01572d7-eda7-4bed-bf24-a8a1ae40dc9e",
    "user_id": "awmla01"
}

Serait il possible d’avoir plutôt le fichier des logs brutes ? Merci

On peut les avoir via le bouton “télécharger” de la page log viewer:
image

C’est plus simple à lire dans le bon sens.

De ce que je vois dans ces logs la réponse du token info semble OK et en relisant le code, je ne vois pas en quoi le calcul de la date d’expiration via le expires_in du token info pourrait être erroné.

Or c’est à priori ce qui doit se passer car au 2ème appel c’est cette date calculée qui a été mise dans le cache est vue comme expirée (si j’en crois les logs c’est là que ça sort en “token expiré” et dans ce cas le token en cache est supprimé, ce qui explique que l’appel suivant découvre le token comme un nouveau token et le laisse à nouveau passer après l’avoir revalidé).

Bref je vais essayer de debugger ce cas particulier de calcul de la date d’expiration pour essayer de mieux comprendre ce qui se passe exactement.

En attendant pouvez vous faire le test dans l’autre mode de validation du token ?

Pour rappel le token peut désormais (= depuis la 5.1.32) être validé de 2 manières (mutuellement exclusives) :

  • soit par appel du endpoint token info (si l’URL token info est renseigné dans l’attribut tokeninfo_url de AUTH_PROVIDERS du provider renault ou dans l’ancien OAUTH2_TOKENINFO_URL renault)
  • soit par décodage du token JWT (si l’URL token info n’est pas renseignée)

Pour passer du mode token info à décodage JWT il faut donc inhiber le paramétrage du token (= renommer l’attribut tokeninfo_url du provider renault en xxx_tokeninfo_url ou le param OAUTH2_TOKENINFO_URL renault en xxx_OAUTH2_TOKENINFO_URL renault)

Attention il faut aussi ajouter un autre type de mapping via l’attribut jwt_claims_mappings du provider renault ou via un paramètre OAUTH2_JWT_CLAIMS_MAPPINGS renault pour retrouver le login, la valeur dans votre cas est:

{ "login": "uid" }

En effet, si j’en crois le décodage de votre token JWT c’est dans l’attribut uid du payload JWT qu’on trouve le login:

Et après avoir fait ces modifs et ajout de paramétrage faites un clear cache global.

Et comme la fois d’avant bien supprimer tous les éventuels tokens persistants au cas où (mais il ne devrait logiquement plus y en avoir).

Merci de me dire si ça change quelque chose.

Si c’est le cas il faudra de toute façon privilégier ce mode car un appel d’URL est forcément plus couteux.

PS: D’ailleurs je soupçonne que dans une révision antérieure où il n’y a pas le pb, la vérification du token via appel au token info doit se refaire à chaque appel, ce qui doit être très impactant sur les perfs

[UPDATE]: je pense avoir débusqué un pb de comparaison de date => à un endroit du code, en fct de là où on est passé, on peut se retrouver à comparer des ms et des s, je creuse cette piste et je vous dit

Une nouvelle révision 5.1.33 a été poussée ce soir. Elle embarque le correctif sur le comparaisons de date.

Merci d’installer cette nouvelle révision et de nous dire si cela résoud votre pb.

Si possible, merci de tester dans les 2 modes de validation (le mode avec URL token info et le mode par décodage JWT).

@thierry.balla avez vous eu le temps de tester avec cette révision ?
Ne serait-ce que dans le mode de vérification en place (via l’URL token info) ?
Merci

@david
J’ai testé sans succès cette nouvelle version. Même comportement. Un élément en plus néanmoins:

2022-03-04 17:43:26,648|SIMPLICITE|ERROR||http://mla-api-5d4956fcc5-q8lhb:8080||ERROR|system|com.simplicite.webapp.servlets.api.ExternalObjectServlet|service||Authentication error: ERR_EXPIRED_TOKEN
2022-03-04 17:43:26,646|SIMPLICITE|ERROR||http://mla-api-5d4956fcc5-q8lhb:8080||ECORED0001|system|com.simplicite.webapp.tools.ServletTool|getAPIGrant||Cached token is expired since 1970-01-01 01:00:00

cf logs
simplicite (6).log (638.7 KB)

De plus le JWT n’arrive pas à valider le token. C’est peut-être lié à un problème d’horloge. Je constate un décalage d’une heure.

Je vois toujours dans les logs des traces please use Use AUTH_PROVIDERS system parameter instead of the legacy OAUTH2_PROVIDER. Il ne faut vraiment plus utiliser ce param système deprecated depuis des lustres.=> supprimez le définitivement et faites un arret / relance

Ensuite pouvez refaire le test juste pour être sûr que ce n’est pas ce paramètre qui pose pb.

On a testé dans une config la plus proche possible de ce qu’on a compris de votre cas d’usage = un token d’un IdP externe validé par appel d’une URL de token info qui renvoie un “expires_in” (à partir duquel est calculé la date d’expiration) et on a pas de pb. La date d’expiration cachée est bien la même que celle calculée, pas une date nulle (=01/01/1970 00:00)

PS: Par contre je ne comprend pas ce que vous voulez dire par:

De plus le JWT n’arrive pas à valider le token. C’est peut-être lié à un problème d’horloge. Je constate un décalage d’une heure

Je ne vois pas de OAUTH2_PROVIDER et dans les logs, comme tu peux voir sur le message la date cachée semble être une date null.
simplicite (7).log (852.6 KB)

Pour JWT, quand je décode le token, je constate une heure de décalage. Là il est 18H32. Je décode le token généré il y a quelques minutes, j’obtiens:

Je me dis que c’est peut-être pour cela qu’il n’est pas valide du tout.

Dans un token JWT la date d’expriration est stockée sous forme d’un nombre de secondes depuis le 01/01/1970 à 00:00:00.

Dans cet outil de décodage JWT il affiche visiblement cette date sous une forme humainement lisible et sur la time zone GMT (c’est la signification du .000Z à la fin) or quand il est 17:32GMT il est bien 18:32CET (Paris)

Le pb n’est donc à priori pas à ce niveau, d’autant que dans le mode de validation par URL de token info c’est ce qui est renvoyé (en l’occurence chez vous un attribut expires_in qui donne le nombre de secondes de validité restante) qui est utilisé pour calculer la date d’expiration du token qui sera mis en cache dans Simplicité (dans ce mode on ne tient pas compte de la date d’expiration contenu dans le token lui même)

C’est bien ce qu’on voit dans les traces (on en ajouté en 5.1.32 et 33 pour qu’on puisse mieux tracer le cas d’utilisation) du 1er appel (fait à 17:43:22):

Token from HTTP request = [eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiI5MzBjY2IzMi0wOTA3LTRiOGYtOGYxZi01ODgyMmUyNjU0NjAiLCJhdWQiOiJlZjBmZjM1Yy00OTVmLTQ1YmItYTYzNi1jZGYyYjYwMTBlOTAiLCJleHAiOjE2NDY0MTM5MTUsImlhdCI6MTY0NjQxMjExNSwibmJmIjoxNjQ2NDEyMDg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IkFvRFNPV2ZGQTdoMFNpTUFDdlJYczVUL29XQUg5QllTQk5heDJvZ2YzVUc3SEowU1RzbE96dHZYYmFVV2NpblNuTzdkYi9hRVRMTllJaUtaUkZCcFNaZnNaUUZhcnNtaTAzWVRpMGVINTNQbi9VRjFRQ2JBSGRKaXUrektDeUdXdUp6QTIxenRQcHhWT2haWEhER1RlcUNGcnRPNUVuTlVEZG5FQWllNXRWYllkVkh2Z0ovR091RWZjbS9sRk1uVDlnN2N2WlV4UXppMkRaYkZvTXRJK29nQmNaRXRUTW84MmhJQkFOWkxieW1uOXVwVkRmYjNicjlBZENyZ0RYY1IyTHJzeHdYcXNTL3BhWU1PU2RyNWlQaVFDRmhOeFhpNjY1Z0tESWJTbHFianlZZWVNUkxFS2YvdDV4RFlsZTNJSm92ZE51OEUzYkVZODhvaTcvMVpiQUxvZkdrcHl2Qk1LV2RIc0l5QlI4cHpuSDlqZFh1emtKN2l5cm9YWUlmbndkWm9oa2pKTExGRy9pZmdKWWd2ZXhnRVZPNFdYZjVyaFRrcjVSTkdpQVhPeUNYcEhQUWlPQ09wWmhvYzZDZDhEZkRzSTkxekFreXlPMGVGVGdtTHBnWk9LTjlzOVNJVlkrY3RHbmRjUEFrdjJGaFBRNWZWS2YvNkRmMlBqbTB0YnIvYTMxUHRwR2pXZVY3VUUwWHMrL1dpRzRuL1VoS2xiVmJLa1NGamVQdz0uNSIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.qriIPi1jYRzh8qRwqEaJWK4E4iAx6EoPnUrJI1WEUjXj33PulrNTTs762mSR07OIjVd9TRwhRDKra7JKIW_qcuSv3OZtdabVqg71vM81e95dpsqy1q0_GpnAVkTYfZS9iThw6nks5Jy7pSsHWEfddmG7OaChEIOqsPEf6g9cNbzK226nERuthnfFoYdIV6C-3fDGOAxdiTOyp1kYEzSnJlT26K2Z7wvDVL0aQHIb0rRN-4CK0VUbKfInSPs6ZHbp8EDdjn-U5fEFA_cAtsfMwdjOJ-6NSD2hTOZCb6Xjb5fOKDPpHJMX2MdeK9ZjMc9_MG-K49Oydc5FOlu9n_KjeA]
Token info response = [{"scope":["arca"],"issuer":"https://idp2.renault.com/nidp/oauth/nam","audience":"ef0ff35c-495f-45bb-a636-cdf2b6010e90","token_id":"930ccb32-0907-4b8f-8f1f-58822e265460","expires_in":1712,"user_id":"awmla01"}]
Login from token info = [awmla01]
Token expiry date from the token info is [2022-03-04 18:11:54]

Le token est donc mis en cache avec une date d’expiration à 18:11:54

or à l’appel suivant fait à 17:43:26 (soit 4s après le 1er) ça dit que la date du token en cache a une date nulle 1970-01-01 00:00:00:

Token from HTTP request = [eyJraWQiOiIxNzY3IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2lkcDIucmVuYXVsdC5jb20vbmlkcC9vYXV0aC9uYW0iLCJqdGkiOiI5MzBjY2IzMi0wOTA3LTRiOGYtOGYxZi01ODgyMmUyNjU0NjAiLCJhdWQiOiJlZjBmZjM1Yy00OTVmLTQ1YmItYTYzNi1jZGYyYjYwMTBlOTAiLCJleHAiOjE2NDY0MTM5MTUsImlhdCI6MTY0NjQxMjExNSwibmJmIjoxNjQ2NDEyMDg1LCJzdWIiOiIzNzM4NjEzNDY1MzUzODMxMmQzNzMxMzU2MTMxMzE2NTYyMmQzODM1MzAzMjM5NjQzOTM0MmQ2MjMzMzczNzM3NjMzODY2IiwiX3B2dCI6IkFvRFNPV2ZGQTdoMFNpTUFDdlJYczVUL29XQUg5QllTQk5heDJvZ2YzVUc3SEowU1RzbE96dHZYYmFVV2NpblNuTzdkYi9hRVRMTllJaUtaUkZCcFNaZnNaUUZhcnNtaTAzWVRpMGVINTNQbi9VRjFRQ2JBSGRKaXUrektDeUdXdUp6QTIxenRQcHhWT2haWEhER1RlcUNGcnRPNUVuTlVEZG5FQWllNXRWYllkVkh2Z0ovR091RWZjbS9sRk1uVDlnN2N2WlV4UXppMkRaYkZvTXRJK29nQmNaRXRUTW84MmhJQkFOWkxieW1uOXVwVkRmYjNicjlBZENyZ0RYY1IyTHJzeHdYcXNTL3BhWU1PU2RyNWlQaVFDRmhOeFhpNjY1Z0tESWJTbHFianlZZWVNUkxFS2YvdDV4RFlsZTNJSm92ZE51OEUzYkVZODhvaTcvMVpiQUxvZkdrcHl2Qk1LV2RIc0l5QlI4cHpuSDlqZFh1emtKN2l5cm9YWUlmbndkWm9oa2pKTExGRy9pZmdKWWd2ZXhnRVZPNFdYZjVyaFRrcjVSTkdpQVhPeUNYcEhQUWlPQ09wWmhvYzZDZDhEZkRzSTkxekFreXlPMGVGVGdtTHBnWk9LTjlzOVNJVlkrY3RHbmRjUEFrdjJGaFBRNWZWS2YvNkRmMlBqbTB0YnIvYTMxUHRwR2pXZVY3VUUwWHMrL1dpRzRuL1VoS2xiVmJLa1NGamVQdz0uNSIsInNjb3BlIjpbImFyY2EiXSwidWlkIjoiYXdtbGEwMSIsImZpcnN0bmFtZSI6Iklybi03MDkwNyIsInVzZXJEaXJlY3RvcnkiOiJhcmNhIiwicG9zdE9mZmljZUJveCI6IkZSRVFWTk9WMDcwIiwicHJlZmVycmVkTGFuZ3VhZ2UiOiJFTiIsIm1haWwiOiJhd21sYS5hZnRlcnNhbGVzQHJlbmF1bHQuY29tIiwiY29zdENlbnRlciI6IkFBNTAxOTEiLCJwZXJzb25UeXBlIjoiY2F0YXBwaSIsImxhc3RuYW1lIjoiTWxhIiwiX3RhcmdldCI6IklkZW50aXR5UHJvdmlkZXIifQ.qriIPi1jYRzh8qRwqEaJWK4E4iAx6EoPnUrJI1WEUjXj33PulrNTTs762mSR07OIjVd9TRwhRDKra7JKIW_qcuSv3OZtdabVqg71vM81e95dpsqy1q0_GpnAVkTYfZS9iThw6nks5Jy7pSsHWEfddmG7OaChEIOqsPEf6g9cNbzK226nERuthnfFoYdIV6C-3fDGOAxdiTOyp1kYEzSnJlT26K2Z7wvDVL0aQHIb0rRN-4CK0VUbKfInSPs6ZHbp8EDdjn-U5fEFA_cAtsfMwdjOJ-6NSD2hTOZCb6Xjb5fOKDPpHJMX2MdeK9ZjMc9_MG-K49Oydc5FOlu9n_KjeA]
Cached token is expired since 1970-01-01 01:00:00

C’est ça que je ne m’explique pas…

A moins que quelque chose au milieu change la date d’expiration.

Pourrais-je avoir le code Java complet du service appelé (com.simplicite.extobjects.mla_external_object.MlaApiTriplet) ? Pour que je regarde ce qu’il fait précisément et que je puisse essayer de tester en faisant la même chose

Merci

Bonjour David,
Je t’ai mis en ici en PJ le code de MlaApiTriplet.
MlaApiTriplet.java (29.2 KB)

cdt,
Thierry

OK, est il possible de tester sans les appels à changeLang ? Si c’est ça qui pose pb je creuserai pour comprendre pourquoi.

1 Like

pour info
changeLang(lang, true)
est plutôt orienté UI = fait un reset cache du Grant sans logout pour recharger tous les textes traduits de la UI (boutons…), enregistre dans m_user cette langue, etc. C’est du même ordre que de faire un changeScope.

Si l’idée est d’utiliser que des instances d’objet pour des API dans une langue donnée, il faut juste changer la langue de travail en mémoire avant les “getTmpObject” via un simple setLang("API") qui ne reset pas le Grant.

Les API REST mappées utilisées ici ne donnent pas directement accès aux objets utilisés pour les requêtes mais on peut envisage une évolution de ce composant pour gérer la langue ce ces instances d’objet si besoin.

Mais effectivement ici, si je comprend bien, le besoin est uniquement de récupérer les traductions des objets et attributs lors de l’init, ce que dit @Francois est alors la bonne chose à faire.

Il faudrait déjà savoir si c’est ça qui pose pb ici ou si c’est autre chose (ex: du code dans les PlatformHooks/GrantHooks ou un pb niveau infra)

PS: rien à voir mais dans votre code cette partie n’est pas au bon endroit:

        if(params.isGet()){
        int page = params.getIntParameter("_page",0);
			if(page <= 0){
				params.getParameters().put("_page", "1");
			}
			int pagesize = params.getIntParameter("_pagesize",0);
			if(pagesize <= 0 || pagesize > 20){
				params.getParameters().put("_pagesize","20");
			}
		}

En effet le init n’est exécuté qu’une seule fois (au 1er appel) pour monter en mémoire la définition de ce que sert le service, ce n’est pas exécuté à chaque appel.

Si vous devez gérer des traitements spécifiques sur les appels GET/PUT/POST/DELETE il faut donc surcharger les méthodes correspondantes, ex: get

1 Like

OK j’ai testé en reproduisant ce que vous faites dans votre code.

Avec ce changement de langue au niveau grant dans le init je reproduis bien le comportement décrit (date nulle = 01/01/1970 00:00:00 au 2ème appel)

Je vais creuser pour comprendre pourquoi (et voir si ça pourrait être amélioré) mais, surtout, tester l’approche niveau objet préconisée par @Francois.

Je vous tiens au courant.