Documentation CLI C#
Interface en ligne de commande cross-platform pour l'API Sharokey construite en C# .NET. Parfaite pour l'automatisation, les scripts et l'intégration CI/CD.
🚀 Démarrage Rapide
Installation
Télécharger l'exécutable :
bash# Télécharger la dernière version curl -L https://github.com/sharokey/cli/releases/latest/download/sharokey.exe -o sharokey.exe # Ou via gestionnaire de packages (Windows) winget install Sharokey.CLILe rendre accessible (ajouter au PATH ou utiliser le chemin complet)
Configurer votre token API :
bashsharokey config --token votre_token_api_iciTester votre configuration :
bashsharokey test
Premier Secret
# Créer votre premier secret
sharokey create "Mon premier secret" --hours 24 --views 1
# Sortie attendue (format JSON) :
{
"slug": "ABC123",
"share_url": "https://votredomaine.com/secret/ABC123#key",
"expires_at": "2025-08-10T12:00:00Z",
"maximum_views": 1,
"created_at": "2025-08-09T12:00:00Z"
}📋 Commandes Disponibles
Configuration
Configurer le CLI avec vos paramètres API :
# Définir le token API (requis)
sharokey config --token votre_token_api
# Optionnel : Définir une URL API personnalisée
sharokey config --api-url https://votre-instance-sharokey.com/api/v1
# Optionnel : Définir le timeout des requêtes (secondes)
sharokey config --timeout 30
# Optionnel : Activer les logs détaillés
sharokey config --logs --log-level debug
# Voir la configuration actuelle
sharokey config --showStockage de la configuration : %APPDATA%\Sharokey\config.json (chiffré)
Créer des Secrets
Créer des secrets avec diverses options de protection :
Création de Base
# Secret simple
sharokey create "Mon mot de passe est : admin123" --hours 24 --views 1
# Avec description
sharokey create "Identifiants base de données" \
--description "Accès DB de production" \
--hours 72 --views 5Avec Protection par Mot de Passe
sharokey create "Données confidentielles" \
--hours 48 --views 3 \
--password "protection2024"Avec Protection OTP
# OTP par email
sharokey create "Détails compte bancaire" \
--hours 24 --views 1 \
--otp-email "[email protected]"
# OTP par SMS
sharokey create "Codes d'accès serveur" \
--hours 12 --views 2 \
--otp-phone "+33123456789"Limitation OTP
Les OTP par email et SMS sont mutuellement exclusifs - vous ne pouvez en utiliser qu'un par secret.
Avec Pièces Jointes
# Pièce jointe unique
sharokey create "Documents contractuels" \
--hours 168 --views 5 \
--attach contrat.pdf
# Pièces jointes multiples
sharokey create "Fichiers du projet" \
--hours 72 --views 3 \
--attach specs.docx --attach wireframes.pdf --attach database.sqlLimites des pièces jointes : 10 fichiers maximum, 10 Mo au total
Exemple de Protection Complète
sharokey create "Données hautement sensibles" \
--description "Rapports financiers T4" \
--hours 48 --views 2 \
--password "Finance2024!" \
--otp-email "[email protected]" \
--attach rapport.xlsx --attach analyse.pdfLecture depuis l'Entrée
# Depuis stdin
echo "Mon contenu secret" | sharokey create --hours 24 --views 1
# Depuis un fichier
sharokey create --file identifiants.txt --hours 12 --views 1Générer des Mots de Passe
Générer des mots de passe aléatoires sécurisés :
# Par défaut : 16 caractères
sharokey generate-password
# Longueur personnalisée (8-32 caractères)
sharokey generate-password --length 24
# Générer et créer un secret en une commande
sharokey generate-password --length 20 --create \
--description "Nouveau mot de passe admin" \
--hours 24 --views 1Lister les Secrets
Voir vos secrets existants avec options de filtrage :
# Lister tous les secrets (format JSON par défaut)
sharokey list
# Format tableau pour une meilleure lisibilité
sharokey list --table
# Limiter les résultats
sharokey list --limit 5
# Filtrer par statut
sharokey list --status active
sharokey list --status expired
sharokey list --status consumed
# Filtrer par créateur
sharokey list --creator "[email protected]"
# Combiner les filtres
sharokey list --status active --limit 10 --tableDétails d'un Secret
Récupérer des informations détaillées sur un secret spécifique :
# Informations de base
sharokey get ABC123
# Mode verbeux (inclut toutes les métadonnées)
sharokey get ABC123 --verboseSupprimer des Secrets
Supprimer des secrets avant leur expiration :
# Supprimer un secret unique
sharokey delete ABC123
# Supprimer plusieurs secrets
sharokey delete ABC123 DEF456 GHI789
# Suppression groupée avec confirmation
sharokey delete ABC123 DEF456 --confirmStatistiques
Voir les statistiques d'utilisation :
# Statistiques globales
sharokey stats
# Statistiques en format tableau
sharokey stats --table📧 Demandes de Secret
Demander à d'autres personnes de partager des secrets avec vous de manière sécurisée via des URL de demande générées.
Créer une Demande de Secret
# Demande de secret de base
sharokey create-request --message "Veuillez partager les identifiants de base de données" --description "Accès DB de production"
# Avec temps d'expiration et limites de vues
sharokey create-request --message "Partager config VPN" --description "Configuration accès distant" --secret-hours 24 --request-hours 48 --max-views 1
# Avec livraison par email
sharokey create-request --message "Veuillez fournir les clés API" --description "Configuration intégration" --email-to "[email protected]" --email-reply "[email protected]"
# Exemple complet avec toutes les options
sharokey create-request \
--message "Veuillez partager les identifiants de production de manière sécurisée" \
--description "Accès déploiement Q4 nécessaire" \
--secret-hours 24 \
--request-hours 48 \
--max-views 1 \
--email-to "[email protected]" \
--email-reply "[email protected]"Lister les Demandes de Secret
# Lister toutes les demandes
sharokey list-requests
# Filtrer par statut
sharokey list-requests --status active
# Limiter les résultats
sharokey list-requests --limit 10
# Filtres combinés
sharokey list-requests --status active --limit 5Obtenir les Détails d'une Demande
# Obtenir les détails d'une demande spécifique par ID
sharokey get-request 123Supprimer une Demande
# Supprimer et invalider une demande
sharokey delete-request 123Statistiques des Demandes
# Obtenir les statistiques de vos demandes de secret
sharokey request-statsParamètres des Demandes de Secret
| Paramètre | Description | Défaut | Requis |
|---|---|---|---|
--message | Message affiché au destinataire | Aucun | Non |
--description | Description interne pour votre référence | Aucun | Non |
--secret-hours | Heures avant expiration du secret partagé | 24 | Non |
--request-hours | Heures avant expiration de la demande | 48 | Non |
--max-views | Vues maximum pour le secret partagé (1-10) | 1 | Non |
--email-to | Email pour envoyer la demande | Aucun | Non |
--email-reply | Email de réponse pour les notifications | Aucun | Non |
⚙️ Options des Commandes
Options Globales
Disponibles pour toutes les commandes :
--json: Forcer la sortie JSON (par défaut)--table: Utiliser le format tableau pour une meilleure lisibilité--verbose: Activer la sortie détaillée et les logs--help: Afficher l'aide de la commande--version: Afficher la version du CLI
Options de Création
| Option | Description | Limites |
|---|---|---|
--hours <nombre> | Expiration en heures | 1 - 1000 heures |
--views <nombre> | Vues maximum avant suppression | 1 - 10 vues |
--description <texte> | Description du secret | Optionnel |
--password <texte> | Protection par mot de passe | Optionnel |
--otp-email <email> | OTP par email | Mutuellement exclusif avec SMS |
--otp-phone <téléphone> | OTP par SMS | Mutuellement exclusif avec email |
--attach <fichier> | Attacher un fichier (répétable) | 10 fichiers max, 10MB/fichier, 25MB total. Formats supportés |
--file <chemin> | Lire le contenu depuis un fichier | Alternative à stdin |
Options de Listage
| Option | Description |
|---|---|
--limit <nombre> | Nombre maximum de résultats à retourner |
--status <statut> | Filtrer par statut : active, expired, consumed |
--creator <email> | Filtrer par email du créateur |
--table | Afficher en format tableau au lieu de JSON |
Options de Génération de Mot de Passe
| Option | Description | Limites |
|---|---|---|
--length <nombre> | Longueur du mot de passe | 8 - 32 caractères |
--create | Créer un secret avec le mot de passe généré | Combine avec les options de création |
🔐 Fonctionnalités de Sécurité
Chiffrement Zero Knowledge
Tous les secrets sont chiffrés côté client en utilisant :
- Algorithme : AES-GCM-256
- Dérivation de Clé : PBKDF2 avec 10 000 itérations
- Système à deux clés : CléA (serveur) + CléB (fragment URL de partage)
- Perfect Forward Secrecy : Chaque secret utilise des clés de chiffrement uniques
Sécurité de la Configuration
- Token API stocké chiffré dans
%APPDATA%\Sharokey\config.json - Aucune donnée sensible dans l'historique des commandes ou les logs
- Génération sécurisée de mots de passe aléatoires
- Pièces jointes chiffrées avant upload
📊 Formats de Sortie
Format JSON (Par Défaut)
{
"slug": "ABC123",
"share_url": "https://sharokey.com/s/ABC123#cle_chiffrement",
"description": "Ma description de secret",
"expires_at": "2025-08-10T12:00:00Z",
"maximum_views": 5,
"remaining_views": 5,
"created_at": "2025-08-09T12:00:00Z",
"has_password": true,
"has_otp": false,
"attachment_count": 2,
"status": "active"
}Format Tableau
┌─────────┬─────────────────────┬──────────┬────────────┬─────────────────────┐
│ Slug │ Description │ Status │ Vues │ Expire │
├─────────┼─────────────────────┼──────────┼────────────┼─────────────────────┤
│ ABC123 │ Mot de passe DB │ active │ 3/5 │ 2025-08-10 12:00 │
│ DEF456 │ Identifiants API │ active │ 1/10 │ 2025-08-11 15:30 │
└─────────┴─────────────────────┴──────────┴────────────┴─────────────────────┘🚨 Gestion d'Erreurs
Le CLI fournit des messages d'erreur clairs pour les problèmes courants :
Erreurs d'Authentification
# Token invalide ou expiré
Erreur : Échec de l'authentification. Veuillez vérifier votre token API.
Conseil : Exécutez 'sharokey config --token VOTRE_TOKEN' pour le mettre à jour.Erreurs de Validation
# Temps d'expiration invalide
Erreur : Les heures doivent être comprises entre 1 et 1000.
# Fichier trop volumineux
Erreur : La pièce jointe 'document.pdf' dépasse la limite de 10 Mo.
# Trop de pièces jointes
Erreur : Maximum 10 pièces jointes autorisées par secret.Erreurs Réseau
# Timeout de connexion
Erreur : Délai d'attente de la requête après 30 secondes.
Conseil : Vérifiez votre connexion internet ou augmentez le timeout avec l'option --timeout.🔧 Gestion de la Configuration
Emplacement du Fichier de Configuration
Windows : %APPDATA%\Sharokey\config.json
Linux/macOS : ~/.config/sharokey/config.json
Paramètres Disponibles
{
"apiToken": "token_chiffre_ici",
"apiUrl": "https://api.sharokey.com/api/v1",
"timeout": 30,
"enableLogs": false,
"logLevel": "info"
}Variables d'Environnement
Vous pouvez également utiliser des variables d'environnement :
# Définir le token via une variable d'environnement
export SHAROKEY_API_TOKEN="votre_token_ici"
export SHAROKEY_API_URL="https://api.personnalisee.url/v1"
export SHAROKEY_TIMEOUT="60"
# Utiliser sans fichier de configuration
sharokey create "Mon secret" --hours 24 --views 1🔄 Intégration CI/CD
Parfait pour l'automatisation et l'intégration continue :
Exemple GitHub Actions
- name: Créer un secret de déploiement
run: |
sharokey create "${{ secrets.DEPLOYMENT_KEY }}" \
--description "Clé de déploiement pour la version ${{ github.sha }}" \
--hours 2 --views 1 \
--otp-email "[email protected]"
env:
SHAROKEY_API_TOKEN: ${{ secrets.SHAROKEY_TOKEN }}Pipeline Jenkins
pipeline {
agent any
environment {
SHAROKEY_API_TOKEN = credentials('sharokey-token')
}
stages {
stage('Partager les Identifiants') {
steps {
script {
def result = sh(
script: 'sharokey create "Mot de passe DB : ${DB_PASS}" --hours 24 --views 1',
returnStdout: true
).trim()
def json = readJSON text: result
echo "URL du secret : ${json.share_url}"
}
}
}
}
}📝 Bonnes Pratiques
Sécurité
- Ne jamais committer les tokens API dans le contrôle de version
- Utiliser les variables d'environnement dans les environnements CI/CD
- Définir des temps d'expiration appropriés (les plus courts possibles)
- Limiter les vues au nombre minimum requis
- Utiliser la protection OTP pour les secrets sensibles
Automatisation
- Parser la sortie JSON pour un usage programmatique
- Gérer les erreurs avec grâce dans les scripts
- Utiliser des timeouts appropriés pour votre environnement
- Logger les opérations pour les pistes d'audit
Performance
- Utiliser les opérations groupées quand c'est possible
- Mettre en cache la configuration dans les environnements automatisés
- Définir des timeouts raisonnables pour les conditions réseau
🐛 Dépannage
Problèmes Courants
"Commande non trouvée"
- S'assurer que
sharokey.exeest dans votre PATH - Ou utiliser le chemin complet :
C:\chemin\vers\sharokey.exe
"Échec de l'authentification"
- Vérifier votre token API :
sharokey config --show - Obtenir un nouveau token depuis votre tableau de bord Sharokey
"Timeout de connexion"
- Vérifier la connectivité internet
- Augmenter le timeout :
sharokey config --timeout 60 - Vérifier que l'URL de l'API est accessible
"Fichier non trouvé"
- Vérifier les chemins des pièces jointes
- S'assurer que les fichiers existent et sont lisibles
- Vérifier la taille des fichiers (limite de 10 Mo par fichier)
Mode Debug
Activer les logs verbeux pour le dépannage :
# Activer le mode debug
sharokey config --logs --log-level debug
# Exécuter une commande avec sortie verbeuse
sharokey create "test" --hours 1 --views 1 --verbose🔗 Ressources Associées
- Comparaison des Fonctionnalités - Comparer avec d'autres librairies
- Référence API - Documentation directe de l'API REST
- Exemples - Plus d'exemples d'utilisation
- JavaScript SDK - Pour les applications Node.js
- Python SDK - Pour les applications Python
