Client HTTP
Babel Licensing prend en charge HTTP comme protocole de transport alternatif à gRPC. Le transport HTTP est utile sur les plateformes ou dans les environnements où gRPC (HTTP/2) n’est pas disponible ou peu pratique, par exemple les anciennes applications .NET Framework ou les environnements réseau restreints.
Pour sélectionner le transport HTTP, appelez la méthode UseHttp() sur l’objet de configuration. Si UseHttp() est appelée, le client communique avec le Babel Licensing Service par son API REST au lieu de gRPC.
Configuration de base
Pour configurer le client afin qu’il utilise le transport HTTP :
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp();
});L’appel de UseHttp() sans paramètre utilise les paramètres par défaut du client HTTP.
HttpClientHandler personnalisé
Vous pouvez passer un rappel de configuration à UseHttp() pour personnaliser les options du client HTTP. Le rappel reçoit un objet HttpClientOptions doté des propriétés suivantes :
- Handler : obtient ou définit le
HttpClientHandlerutilisé pour les requêtes HTTP. - Timeout : obtient ou définit le
TimeSpandu délai d’expiration du client HTTP.
SSL/TLS avec des certificats auto-signés
Pour vous connecter à un service qui utilise un certificat auto-signé, configurez le HttpClientHandler pour qu’il accepte le certificat :
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Certificats client
Pour présenter un certificat client lors de la négociation SSL/TLS :
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
var certificate = new X509Certificate2("<cert file>.pfx", "<cert password>");
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
ClientCertificates = { certificate },
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};
});
});Délai d’expiration personnalisé
Vous pouvez indiquer un délai d’expiration personnalisé pour les requêtes HTTP :
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Timeout = TimeSpan.FromSeconds(10);
http.Handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
});
});Configuration du proxy
Pour acheminer les requêtes HTTP par un proxy :
BabelLicensing.Configure(config =>
{
config.ServiceUrl = "https://localhost:5005";
config.UseHttp(http =>
{
http.Handler = new HttpClientHandler()
{
Proxy = new WebProxy("http://proxy-server:8080")
{
UseDefaultCredentials = true
}
};
});
});UseHttp ou UseGrpc
Le protocole de transport dépend de la méthode que vous appelez sur la configuration :
UseHttp() : utilise l’API REST sur HTTP/1.1. Compatible avec toutes les plateformes .NET et toutes les configurations réseau.UseGrpc() : utilise gRPC sur HTTP/2. Offre de meilleures performances grâce à la sérialisation binaire et au multiplexage, mais nécessite la prise en charge de HTTP/2.
Si aucune des deux méthodes n’est appelée, le client utilise gRPC par défaut là où il est pris en charge.