Maison  >  Article  >  Java  >  Comment comprendre comment SpringBoot génère une licence

Comment comprendre comment SpringBoot génère une licence

PHPz
PHPzavant
2023-05-14 08:16:051171parcourir

Avant-propos

La licence fait référence à la licence de droit d'auteur. Après avoir développé le système, si nous ne voulons pas que les utilisateurs l'utilisent gratuitement tout le temps, par exemple en le renouvelant en fonction du temps, la licence sera utile.

Nous pouvons spécifier la période de validité de la licence pour le système et contrôler le temps disponible du système.

Alors pour le projet SpringBoot, comment ajouter une Licence ? Ensuite, le prince vous proposera un ensemble de solutions. (Bien sûr, il existe plusieurs façons de l'implémenter)

L'outil pour générer une licence

a été packagé, et les amis peuvent le télécharger et l'utiliser directement : https://gitee.com/lm970585581/spring-boot2-license

Après le téléchargement, ouvrez la licence cloud - Le projet de service peut être démarré directement.

Appelez ensuite l'interface d'acquisition d'informations du projet : http://localhost:9081/license/getServerInfos?osName=windows

Vous obtiendrez des résultats similaires aux suivants, qui représentent l'adresse IP, l'adresse MAC, le numéro de série du processeur et numéro de série de la carte mère respectivement.

{
    "ipAddress": [
        "192.168.80.1",
        "192.168.220.1"
    ],
    "macAddress": [
        "01-51-56-C0-00-01",
        "00-52-56-C0-00-08",
        "BC-54-2D-DF-69-FC"
    ],
    "cpuSerial": "BFECFBFF000806EC",
    "mainBoardSerial": "L1HF16301D5"
}

Utilisez l'outil keytool fourni avec JDK pour générer le magasin de certificats de clés publiques et privées :

Si nous définissons le mot de passe du magasin de clés publiques sur : public_password1234 et le mot de passe du magasin de clés privées sur : private_password1234, la commande générée est la suivante :

#生成命令
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -keypass "private_password1234" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
 
#导出命令
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "public_password1234" -file "certfile.cer"
 
#导入命令
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "public_password1234"

Une fois la commande ci-dessus exécutée, trois fichiers seront générés dans le chemin actuel, à savoir : privateKeys.keystore, publicCerts.keystore et certfile.cer. Le fichier certfile.cer n'est plus nécessaire et peut être supprimé. Le fichier privateKeys.keystore est utilisé dans le projet ServerDemo actuel pour générer des fichiers de licence pour les clients, tandis que le fichier publicCerts.keystore est déployé sur le serveur client avec le code de l'application. . L'utilisateur déchiffre le fichier de licence et vérifie ses informations de licence.

Enfin, nous générons à nouveau la licence, et l'adresse de l'interface appelante est : http://localhost:9081/license/generateLicense

Le paramètre appelant est un paramètre json au format suivant :

{
    "subject": "license_demo",
    "privateAlias": "privateKey",
    "keyPass": "private_password1234",
    "storePass": "public_password1234",
    "licensePath": "C:/Users/zifangsky/Desktop/license_demo/license.lic",
    "privateKeysStorePath": "C:/Users/zifangsky/Desktop/license_demo/privateKeys.keystore",
    "issuedTime": "2018-07-10 00:00:01",
    "expiryTime": "2019-12-31 23:59:59",
    "consumerType": "User",
    "consumerAmount": 1,
    "description": "这是证书描述信息",
    "licenseCheckModel": {
        "ipAddress": ["192.168.245.1", "10.0.5.22"],
        "macAddress": ["00-50-56-C0-00-01", "50-7B-9D-F9-18-41"],
        "cpuSerial": "BFEBFBFF000406E3",
        "mainBoardSerial": "L1HF65E00X9"
    }
}

Si la demande aboutit , il sera finalement dans le paramètre licencePath. Le chemin défini génère un fichier licence.lic, qui est le fichier de licence du serveur pour déployer le code auprès des clients.

Utilisation de la licence

Si vous suivez les étapes ci-dessus étape par étape, nous avons obtenu la licence.lic, et l'étape suivante consiste à utiliser la licence dans nos propres projets.

cloud-license-client est un exemple de projet importé Vous pouvez l'ouvrir et l'utiliser directement.

Pour présenter votre propre projet, importez simplement les fichiers suivants

Comment comprendre comment SpringBoot génère une licence

et configurez l'intercepteur LicenseCheckInterceptor pour l'utiliser. La méthode de configuration est dans la classe InterceptorConfig, vous pouvez vous y référer.

Il est à noter ici que l'utilisation d'une licence nécessite deux fichiers : licence.lic, publicCerts.keystore

Le chemin configuré dans le projet démo est un chemin absolu. Généralement, nous allons configurer un chemin relatif, mettre les deux fichiers sous le. projet et configurez l'emplacement Dans la classe LicenseCheckListener

modifiez simplement la partie suivante et changez-la en lecture de chemin relatif

Comment comprendre comment SpringBoot génère une licence

Je ne montrerai pas comment la modifier ici, car elle est facile à modifier.

Encore une chose à noter :

Pour les classes LicenseCheckModel et LicenseCreatorParam, après les avoir présentées à votre propre client, vous devez vous assurer que le nom du package est cohérent avec le nom du package lors de la génération de la licence, sinon cela entraînera un échec de sérialisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer