Authentification mutuelle dans les applications RPC
Les services RPC peuvent utiliser des points de connexion de service pour se publier eux-mêmes, ou ils peuvent utiliser les API de service de noms RPC (RpcNs). Cette rubrique explique comment effectuer une authentification mutuelle avec un service RPC qui se publie lui-même à l’aide des API RpcNs (RPC Name Service).
Pour inscrire un SPN dans le répertoire
- Appelez la fonction DsGetSpn pour composer un nom de principal du service (SPN) pour le service.
- Appelez la fonction DsWriteAccountSpn pour inscrire le SPN sur le compte de service ou le compte d’ordinateur dans le contexte duquel le service s’exécutera.
Pour inscrire un service auprès du service RPC Naming Service
- Vérifiez que les SPN appropriés sont enregistrés sur le compte sous lequel le service est en cours d’exécution. Pour plus d’informations, consultez tâches de maintenance de compte d’ouverture de session.
- Appelez la fonction RpcServerRegisterAuthInfo pour inscrire le SPN du service auprès du service d’authentification RPC, et spécifiez RPC _ C _ Authn _ GSS _ Negotiate comme service d’authentification à utiliser.
Pour plus d’informations sur l’exécution d’une authentification mutuelle dans un service RPC, voir écriture d’un serveur SSPI authentifié.
Pour authentifier le service à partir du client
Extrayez le nom d’hôte de la liaison RPC.
Composez le SPN pour le service en appelant la fonction DsMakeSpn avec la classe de service, le nom d’hôte DNS et le nom de service. Il s’agit du nom unique du point de connexion dans le cas de RpcNs.
Pour plus d’informations sur la composition d’un SPN pour un service RpcNs, consultez composition de SPN pour un service RpcNs.
Configurez une structure _ _ QoS de sécurité RPC pour demander une authentification mutuelle.
Appelez la fonction RpcBindingSetAuthInfoEx pour définir les données d’authentification de la liaison RPC. Le client doit demander au moins _ _ _ _ _ l’intégrité PKT du niveau d’authentification RPC C pour s’assurer que les communications n’ont pas été falsifiées. Pour une sécurité accrue, le client doit spécifier la _ _ _ _ _ confidentialité du niveau Authn C RPC pour demander le chiffrement.
Exécutez l’appel RPC.
Pour plus d’informations sur l’exécution de l’authentification mutuelle dans un client RPC, voir écriture d’un client SSPI authentifié.
Pour authentifier le client à partir du service
- Appelez la fonction RpcBindingInqAuthClient pour vérifier les paramètres d’authentification spécifiés par le client. Si le client n’a pas demandé le niveau d’authentification souhaité, refusez l’appel. N’oubliez pas qu’un service RPC doit vérifier le niveau d’authentification, le service d’authentification et l’identité du client à chaque appel pour s’assurer que le client a été correctement authentifié.
- Appelez la fonction RpcImpersonateClient pour emprunter l’identité du client.
- Exécutez l’opération demandée.
- Appelez la fonction RpcRevertToSelf pour rétablir le contexte de sécurité du service.
Pour plus d’informations sur l’emprunt d’identité du client RPC, consultez emprunt d’identité du client.
Pour plus d'informations, consultez les pages suivantes :