2010-01-29 3 views
2

À quoi sert "The Secure External Password Store"?création d'un champ de mot de passe dans oracle

Puis-je créer un champ de mot de passe dans ma table Oracle en utilisant "The Secure External Password Store"? Ou comment puis-je créer un champ de mot de passe dans ma table Oracle sans utiliser "The Secure External Password Store"?

Répondre

3

Une méthode sans utiliser « Le mot de passe externe Secure Store » (quel qu'il soit) est d'ajouter une colonne RAW (16) à la table pour stocker un nom d'utilisateur haché et mot de passe:

alter table mytable add password raw(16); 

Puis magasin le nom d'utilisateur et mot de passe haché comme ceci:

insert into mytable (username, password, ...) 
values (:username, dbms_obfuscation_toolkit.md5 
         (input => utl_i18n.string_to_raw 
            (upper(:username)||:password)) 
     ); 

Ensuite, lorsqu'un utilisateur tente de se connecter avec un nom d'utilisateur et mot de passe, vous pouvez les vérifier comme ceci:

select 'OK' 
from mytable 
where username = :username 
and password = dbms_obfuscation_toolkit.md5 
         (input => utl_i18n.string_to_raw 
            (upper(:username)||:password)); 

De cette façon, personne ne peut savoir quel est le mot de passe stocké (autrement que par force brute).

2

Le magasin de mots de passe externes sécurisés n'est pas conçu pour les comptes d'utilisateurs classiques. Il vise à maintenir fermement passords pour les comptes qui ont besoin de se connecter à la base de données de processus nerveux autonome (comme, par exemple, les scripts shell):

Le magasin de mot de passe externe sécurisé utilise un portefeuille Oracle pour une ou plus combinaisons nom d'utilisateur/mot de passe pour exécuter des traitements par lots et d'autres tâches qui s'exécutent sans intervention de l'utilisateur.

Find out more.

Pourquoi voulez-vous stocker les mots de passe des utilisateurs dans la base de données? Si vous souhaitez que les utilisateurs se connectent via des comptes individuellement identifiables, utilisez la fonctionnalité USER d'Oracle. Si vous créez un site Web et que vos utilisateurs se connectent via un utilisateur générique, l'authentification est mieux gérée via un élément du niveau intermédiaire qui s'authentifie auprès d'Active Directory (ou autre) via LDAP (ou autre). Mais si vous voulez vraiment faire votre propre authentification, utiliser un hachage unidirectionnel comme le suggère Tony est la voie à suivre. Cependant, si vous êtes sur une version récente d'Oracle (et que votre intérêt pour le magasin de mots de passe externe sécurisé suggère que vous êtes sur au moins 10g), alors vous devriez utiliser DBMS_CRYPTO.HASH() with the SHA-1 algorithm plutôt que l'ancien MD5.

+0

Bons points - Je dois étudier DBMS_CRYPTO. La raison pour laquelle j'utilise des mots de passe stockés dans la base de données est que je travaille sur un site web public où tout le monde peut s'inscrire. Construit en utilisant Apex, bien sûr! –

+0

@Tony Andrews - Bien sûr, c'est Apex - y a-t-il un autre outil? – APC

Questions connexes