Impersonation niveau "Delegate" via API [closed]

3 weeks ago 15
ARTICLE AD BOX

Bonjour,

Je cherche à réaliser une impersonation de niveau "Delegate" avec mon API.
Mon utilisateur appel ma route en passant son login/mdp. L'API va s'authentifier sur mon AD avec son login et mot de passe et faire un Impersonate.

const int LOGON32_LOGON_INTERACTIVE = 2; const int LOGON32_PROVIDER_DEFAULT = 0; bool loggedOn = LogonUser(request.Username, domain, request.Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out safeTokenHandle); using (safeTokenHandle) { WindowsIdentity.RunImpersonated(safeTokenHandle, () => { WindowsIdentity identity = WindowsIdentity.GetCurrent(); Log($"Impersonnalisation réussie. Identité active : {identity.Name}. Niveau d'impersonnalisation : {identity.ImpersonationLevel}"); Env userEnv = new Env(isDev ? Servers.AsDev : Servers.AsProd, source: Appli.ApiErp); Log($"Objet 'Env' initialisé avec succès pour {identity.Name} sur {(isDev ? "DEV" : "PROD")}."); }); }

Sur l'impersonation je tombe sur un niveau "Impersonate" ce qui m'empêche de transférer cette connexion Kerberos à mon AS400 (qui autorise seulement une connexion Kerberos car la gestion locale du mot de passe est désactivée).

Côté IIS, nous avons configuré les SPN sur le compte de service, mis l'authentification de l'application sur "Negociate".

Configuration du Pool d'application

Sauriez-vous comment je pourrais passer au niveau "Delegate" ou faire du Kerberos sur mon AS400 ?

Merci d'avance de votre aide !

Read Entire Article