

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création de fonctions personnalisées pour vérifier les mots de passe
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword"></a>

Vous pouvez créer une fonction de vérification de mot de passe personnalisée des manières suivantes :
+ Pour utiliser la logique de vérification standard et stocker votre fonction dans le schéma `SYS`, utilisez la procédure `create_verify_function`. 
+ Pour utiliser la logique de vérification personnalisée, ou pour éviter de stocker votre fonction dans le schéma `SYS`, utilisez la procédure `create_passthrough_verify_fcn`. 

# Procédure create\$1verify\$1function
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Standard"></a>

Vous pouvez créer une fonction personnalisée pour vérifier les mots de passe en utilisant la procédure Amazon RDS `rdsadmin.rdsadmin_password_verify.create_verify_function`. La procédure `create_verify_function` est prise en charge pour toutes les versions de RDS for Oracle.

La procédure `create_verify_function` possède les paramètres suivants. 


****  

| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  Oui  |  Nom de la fonction personnalisée. Cette fonction est automatiquement créée dans le schéma SYS. Elle est affectée à des profils utilisateur.   | 
|  `p_min_length`  |  nombre  |  8  |  Non  |  Nombre minimal de caractères requis.  | 
|  `p_max_length`  |  nombre  |  256  |  Non  |  Nombre maximal de caractères autorisés.  | 
|  `p_min_letters`  |  nombre  |  1  |  Non  |  Nombre minimal de lettres requises.  | 
|  `p_min_uppercase`  |  nombre  |  0  |  Non  |  Nombre minimal de lettres majuscules requises.  | 
|  `p_min_lowercase`  |  nombre  |  0  |  Non  |  Nombre minimal de lettres minuscules requises.  | 
|  `p_min_digits`  |  nombre  |  1  |  Non  |  Nombre minimal de chiffres requis.  | 
|  `p_min_special`  |  nombre  |  0  |  Non  |  Nombre minimal de caractères spéciaux requis.  | 
|  `p_min_different_chars`  |  nombre  |  3  |  Non  |  Nombre minimal de caractères différents requis entre l'ancien et le nouveau mot de passe.  | 
|  `p_disallow_username`  |  booléen  |  true  |  Non  |  Définissez ce paramètre sur `true` pour interdire le nom d'utilisateur dans le mot de passe.  | 
|  `p_disallow_reverse`  |  booléen  |  true  |  Non  |  Définissez ce paramètre sur `true` pour interdire le nom d'utilisateur inversé dans le mot de passe.  | 
|  `p_disallow_db_name`  |  booléen  |  true  |  Non  |  Définissez ce paramètre sur `true` pour interdire le nom de la base de données ou du serveur dans le mot de passe.  | 
|  `p_disallow_simple_strings`  |  booléen  |  true  |  Non  |  Définissez ce paramètre sur `true` pour interdire l'utilisation de chaînes simples comme mot de passe.  | 
|  `p_disallow_whitespace`  |  booléen  |  false  |  Non  |  Définissez ce paramètre sur `true` pour interdire les espaces dans le mot de passe.  | 
|  `p_disallow_at_sign`  |  booléen  |  false  |  Non  |  Définissez ce paramètre sur `true` pour interdire le caractère @ dans le mot de passe.  | 

Vous pouvez créer plusieurs fonctions de vérification de mot de passe.

Il existe des restrictions sur le nom de votre fonction personnalisée. Votre fonction personnalisée ne peut pas avoir le même nom qu'un objet système existant. Ce nom ne peut pas comporter plus de 30 caractères. De plus, le nom doit inclure l'une des chaînes suivantes : `PASSWORD`, `VERIFY`, `COMPLEXITY`, `ENFORCE` ou `STRENGTH`. 

L'exemple suivant crée une fonction nommée `CUSTOM_PASSWORD_FUNCTION`. La fonction exige qu'un mot de passe comporte au moins 12 caractères, 2 majuscules, 1 chiffre et 1 caractère spécial, et interdit le caractère @. 

```
begin
    rdsadmin.rdsadmin_password_verify.create_verify_function(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_min_length           => 12, 
        p_min_uppercase        => 2, 
        p_min_digits           => 1, 
        p_min_special          => 1,
        p_disallow_at_sign     => true);
end;
/
```

Pour voir le texte de votre fonction de vérification, interrogez `DBA_SOURCE`. L'exemple suivant récupère le texte d'une fonction de mot de passe personnalisé nommée `CUSTOM_PASSWORD_FUNCTION`. 

```
COL TEXT FORMAT a150

  SELECT TEXT 
    FROM DBA_SOURCE 
   WHERE OWNER = 'SYS' 
     AND NAME = 'CUSTOM_PASSWORD_FUNCTION' 
ORDER BY LINE;
```

Pour associer votre fonction de vérification à un profil utilisateur, utilisez `ALTER PROFILE`. L'exemple suivant associe une PL/SQL fonction de vérification nommée `CUSTOM_PASSWORD_FUNCTION` au profil `DEFAULT` utilisateur. `PASSWORD_VERIFY_FUNCTION`est le nom de la ressource du profil Oracle. 

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

Pour voir quels profils utilisateur sont associés à quelles fonctions de vérification, effectuez une requête`DBA_PROFILES`. L'exemple suivant obtient les profils qui sont associés à la fonction de vérification personnalisée nommée `CUSTOM_PASSWORD_FUNCTION`. 

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION';


PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
```

L'exemple suivant récupère tous les profils et les fonctions de vérification de mot de passe associées. 

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION';

PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
RDSADMIN                   PASSWORD_VERIFY_FUNCTION          PASSWORD  NULL
```

# Procédure create\$1passthrough\$1verify\$1fcn
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Custom"></a>

La procédure `create_passthrough_verify_fcn` est prise en charge pour toutes les versions de RDS for Oracle.

Vous pouvez créer une fonction personnalisée pour vérifier les mots de passe en utilisant la procédure Amazon RDS `rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn`. La procédure `create_passthrough_verify_fcn` possède les paramètres suivants. 


****  

| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  Oui  |  Nom de la fonction de vérification personnalisée. Il s'agit d'une fonction de wrapper qui est automatiquement créée dans le schéma SYS et qui ne contient pas de logique de vérification. Elle est affectée à des profils utilisateur.   | 
|  `p_target_owner`  |  varchar2  |  —  |  Oui  |  Propriétaire de schéma de la fonction de vérification personnalisée.  | 
|  `p_target_function_name`  |  varchar2  |  —  |  Oui  |  Nom de la fonction personnalisée existante qui contient la logique de vérification. Votre fonction personnalisée doit renvoyer une valeur booléenne. La fonction doit renvoyer la valeur `true` si le mot de passe est valide, ou `false` s'il ne l'est pas.   | 

L'exemple suivant crée une fonction de vérification de mot de passe qui utilise la logique provenant de la fonction nommée `PASSWORD_LOGIC_EXTRA_STRONG`. 

```
begin
    rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_target_owner         => 'TEST_USER',
        p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG');
end;
/
```

Pour associer la fonction de vérification à un profil utilisateur, utilisez `alter profile`. L'exemple suivant associe la fonction de vérification au profil utilisateur `DEFAULT`. 

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```