Fournisseurs de services de sécurité
L’interface SSPI (Security Service Provider Interface) fournit une interface universelle et standard pour les applications distribuées sécurisées. L’API graphique d’homologues offre aux applications un moyen de sécuriser les liens dans un graphique en spécifiant un fournisseur de services de sécurité (SSP), qui est une DLL qui implémente une interface SSPI. Une application spécifie un fournisseur de services partagés lors de la création d’un graphique à l’aide de PeerGraphCreate.
Pour plus d’informations sur la création de votre propre fournisseur de services partagés, consultez le lien de la documentation SSPI dans la liste des liens de référencesur les graphiques.
Considérations relatives à la programmation pour l’implémentation d’un SSP
Soyez prudent lors de l’appel à une application à partir d’un SSP. Les considérations suivantes s’appliquent aux rappels de fournisseur de services partagés :
- Le retour des rappels ne doit pas prendre beaucoup de temps, car ils sont appelés pendant la négociation de la connexion. S’il faut trop de temps pour établir une connexion, la connexion peut être supprimée.
- L’API de représentation graphique des homologues ajuste dynamiquement les valeurs de délai d’attente de connexion, en fonction de la charge réelle d’un système. La valeur du délai d’expiration le plus bas est de 20 secondes.
- Pour éviter les situations de blocage potentielles, une application ne doit pas accéder à la base de données graphique des homologues à partir d’un rappel. Si une application requiert des informations de la base de données de graphiques, l’application peut mettre en cache les informations nécessaires, puis faire référence au cache à partir du rappel. La mise en cache peut également contribuer à réduire le temps de connexion.
Lors de l’appel des points d’entrée SSPI, l’infrastructure de représentation graphique des homologues requiert des valeurs spécifiques pour des paramètres spécifiques de cinq (5) fonctions. Vous ne pouvez pas modifier ces valeurs de paramètre fournies au fournisseur SSP et le SSP peut ignorer les valeurs des cinq paramètres ou les gérer correctement. La liste suivante identifie ces paramètres spécifiques et les valeurs requises :
-
Spécifiez un (1) pour le paramètre pvGetKeyArgument . Spécifie la valeur null pour les paramètres pszPrincipal, pvLogonID et pGetKeyFn .
-
Spécifiez les indicateurs suivants pour le paramètre fContextReq : ISC req-authentification mutuelle d’ISC req-confidentialité ISC req req intégrité de la séquence de demande ISC req req du flux ISC req _ _ _ | _ _ | _ _ | _ _ _ | _ _ | _ _ allouer _ de la mémoire.
-
Spécifiez les indicateurs suivants pour le paramètre fContextReq : ASC _ req _ Mutual _ auth | ASC req _ _ Confidential | ASC _ req _ intégrité | ASC _ req _ Sequence _ détecter | ASC _ req _ Stream | ASC _ req _ allouer _ de la mémoire.
-
Spécifiez zéro (0) pour les paramètres fQOP et MessageSeqNo .
-
Spécifiez zéro (0) pour le paramètre MessageSeqNo et null pour le paramètre pfQOP .
Lors de l’appel de EncryptMessage, quatre mémoires tampons sont passées dans la structure SecBufferDesc . Le tableau suivant identifie l’ordre de transmission des mémoires tampons.
| Structure spécifique au fournisseur de services partagés | Description |
|---|---|
| _ _ en-tête de flux SECBUFFER | Contient les données d’en-tête de sécurité. La taille de la mémoire tampon d’en-tête est obtenue en appelant QueryContextAttributes et en spécifiant l’attribut de _ _ _ tailles de flux attr SECPKG . |
| _données SECBUFFER | Contient le message en texte brut à chiffrer. |
| Code de fin de _ flux SECBUFFER _ | Contient les données de code de fin de sécurité. La taille de la mémoire tampon d’en-tête est obtenue en appelant QueryContextAttributes et en spécifiant l’attribut de _ _ _ tailles de flux attr SECPKG . |
| SECBUFFER _ vide | Non initialisé. La taille de cette mémoire tampon est égale à zéro (0). |
Lors de l’appel de DecryptMessage, l’API de représentation graphique d’homologue passe exactement quatre structures SecBuffer . La première mémoire tampon est SECBUFFER _ Data et contient un message chiffré. Les mémoires tampons restantes sont utilisées pour la sortie et sont de type SECBUFFER _ vide.
Le SSP doit prendre en charge le chiffrement et le déchiffrement des tampons de données utilisateur avec des tailles de 16 Ko et plus dans un appel.