Emmanuelle
(Emmanuelle Fenice)
April 27, 2026, 1:52pm
23
C’est bizarre car je teste en entrant directement dans custom auth. Je vais refaire des tests.
[BASE_URL]/ui/l/form-api-7-test-efe-?_provider=custom:standard_external_auth
Fondamentalement est-ce que votre besoin c’est bien de router sur un user générique si le user n’est pas identifié/authentifié par l’IdP ?
Oui c’est exactement notre besoin (et conserver deeplink et permalink dans l’opération)
david
(David AZOULAY)
April 27, 2026, 2:05pm
24
OK je te laisse creuser.
Pour ce qui est du besoin, il y a un hook pour customiser la gestion d’erreur (customErrorResponse) par où passent normalement les éventuelles erreurs retournées par l’IdP. Est-ce là que vous vous rappelez en forçant votre ident/authent générique ?
Emmanuelle
(Emmanuelle Fenice)
April 28, 2026, 6:14am
25
Oui c’est bien ça, en cas de user inconnu par l’Idp, customErrorResponse redirige vers customAuth.
En revanche j’ai bloqué l’environnement avec le return API_USER, même en essayant de me connecter avec le provider interne je me retrouve dans customAuth … je vais essayer de me connecter à la db pour le désactiver.
david
(David AZOULAY)
April 28, 2026, 6:55am
26
Un customAuth inconditionnel prend le pas sur tout autre mode d’ident/authent d’où ma recommandation de faire un return "designer";
Emmanuelle
(Emmanuelle Fenice)
April 28, 2026, 7:07am
27
Ah, eh bien j’en apprends des choses.
J’ai débloqué en ajoutant en base les droits designer à mon api_user via Rancher.
Je reprends pour essayer de cibler mon souci …
Emmanuelle
(Emmanuelle Fenice)
April 28, 2026, 7:27am
28
Donc avec customAuth conditionnel, mon permalink est perdu et j’arrive sur la page d’accueil (même avec designer)
@Override
public String customAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
JSONObject provider = AuthTool.getAuthProvider(request);
if (provider != null && STANDARD_AUTH.equals(provider.getString("name"))) {
String qryString = request.getQueryString();
String referer = request.getHeader("referer");
AppLog.info("AEK qryString = "+ qryString + " / referer = " + referer, Grant.getSystemAdmin());
if ((qryString != null && (qryString.contains(API_FORM_PERMA_OBJ) || qryString.contains(API_FORM_OBJ) || qryString.contains(API_FORM_CHOICE_OBJ)))
|| (referer != null && (referer.contains(API_FORM_PERMA_OBJ) || referer.contains(API_FORM_OBJ) || referer.contains(API_FORM_CHOICE_OBJ)))) {
return "designer";
}
}
return super.customAuth(request, response);
}
Et avec customAuth inconditionnel, mon permalink est bien traduit en deeplink et j’arrive sur mon formulaire
@Override
public String customAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
return "designer";
}
Help
david
(David AZOULAY)
April 28, 2026, 8:00am
29
Quel est le code du customErrorResponse?
Emmanuelle
(Emmanuelle Fenice)
April 28, 2026, 8:05am
30
Je ne m’en sers pas pour l’instant, mon test consiste simplement à saisir [BASE_URL]/ui/l/form-api-7-test-efe-?_provider=custom:standard_external_auth dans le navigateur
david
(David AZOULAY)
April 28, 2026, 9:04am
31
Et le contenu du AUTH_PROVIDERS
Emmanuelle
(Emmanuelle Fenice)
April 28, 2026, 9:16am
32
Voici
[
{
"visible": true,
"name": "simplicite",
"type": "internal"
},
{
"authorize_url": "https://sso-uat.renault.com/oauth2/austwoeshbCkPJyw1416/v1/authorize",
"userinfo_url": "https://sso-uat.renault.com/oauth2/austwoeshbCkPJyw1416/v1/userinfo",
"label": "Sign in with MFS credentials",
"jwt_claims_mappings": {
"login": "sub",
"lang": "ignore"
},
"type": "oauth2",
"sync": true,
"client_id": "XXXXXX",
"userinfo_mappings": {
"firstname": "given_name",
"phone": "phone",
"login": "preferred_username",
"lang": "ignore",
"email": "email",
"lastname": "family_name"
},
"name": "okta",
"jwt_issuer": "https://sso-uat.renault.com/oauth2/austwoeshbCkPJyw1416",
"client_secret": "XXXXXXXXX",
"scopes": "openid profile email alliance_profile",
"token_url": "https://sso-uat.renault.com/oauth2/austwoeshbCkPJyw1416/v1/token",
"visible": true
},
{
"visible": false,
"name": "ldap",
"type": "ldap",
"sync": false
},
{
"visible": true,
"name": "standard_external_auth",
"label": "Public authentication",
"type": "custom"
},
{
"visible": false,
"name": "api_external_auth",
"label": "API authentication",
"type": "custom"
}
]