Permalink et customAuth, la suite

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)

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 ?

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.

Un customAuth inconditionnel prend le pas sur tout autre mode d’ident/authent d’où ma recommandation de faire un return "designer";

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 …

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

image

    @Override
    public String customAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
    	return "designer";

    }

Help :sweat_smile:

Quel est le code du customErrorResponse?

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

Et le contenu du AUTH_PROVIDERS

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"
    }
]