Passer au contenu principal

Spring Boot

casdoor-spring-boot-example est un exemple de comment utiliser casdoor-spring-boot-starter dans un projet Spring Boot. Nous allons vous guider à travers les étapes ci-dessous.

Étape 1 : Déployer Casdoor

Tout d'abord, Casdoor doit être déployé.

Vous pouvez vous référer à la documentation officielle de Casdoor pour l'Installation du Serveur. Veuillez déployer votre instance Casdoor en mode production.

Après un déploiement réussi, assurez-vous de ce qui suit :

  • Ouvrez votre navigateur préféré et visitez http://localhost:8000. Vous verrez la page de connexion de Casdoor.
  • Testez la fonctionnalité de connexion en entrant admin comme nom d'utilisateur et 123 comme mot de passe.

Maintenant, vous pouvez rapidement implémenter une page de connexion basée sur Casdoor dans votre propre application en suivant les étapes suivantes.

Étape 2 : Importer casdoor-spring-boot-starter

Vous pouvez importer le casdoor-spring-boot-starter en utilisant Maven ou Gradle.

<!-- https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter -->
<dependency>
<groupId>org.casbin</groupId>
<artifactId>casdoor-spring-boot-starter</artifactId>
<version>1.x.y</version>
</dependency>

Étape 3 : Initialiser la Configuration

L'initialisation nécessite 6 paramètres de type chaîne de caractères dans l'ordre suivant : | Nom | Requis | Description | | ---------------- | ------ | ----------------------------------------------------- | | endpoint | Oui | URL du serveur Casdoor, comme http://localhost:8000 | | clientId | Oui | ID client de l'application | | clientSecret | Oui | Secret client de l'application | | certificate | Oui | Certificat de l'application | | organizationName | Oui | Organisation de l'application | | applicationName | Non | Nom de l'application | Vous pouvez utiliser des propriétés Java ou des fichiers YAML pour l'initialisation.

casdoor.endpoint = http://localhost:8000
casdoor.clientId = <client-id>
casdoor.clientSecret = <client-secret>
casdoor.certificate = <certificate>
casdoor.organizationName = built-in
casdoor.applicationName = app-built-in
prudence

Remplacez les valeurs de configuration par celles de votre propre instance Casdoor, en particulier le clientId, clientSecret, et jwtPublicKey.

Étape 4 : Rediriger vers la Page de Connexion

Lorsque vous avez besoin d'authentifier les utilisateurs qui accèdent à votre application, vous pouvez envoyer l'URL cible et rediriger vers la page de connexion fournie par Casdoor. Assurez-vous d'avoir ajouté l'URL de rappel (par exemple http://localhost:8080/login) dans la configuration de l'application au préalable.

@Resource
private CasdoorAuthService casdoorAuthService;

@RequestMapping("toLogin")
public String toLogin() {
return "redirect:" + casdoorAuthService.getSigninUrl("http://localhost:8080/login");
}

Étape 5 : Obtenir le Token et l'Analyser

Après que la vérification Casdoor soit passée, elle redirigera vers votre application avec le code et l'état.

Vous pouvez obtenir le code et appeler la méthode getOAuthToken, puis analyser le token JWT.

CasdoorUser contient les informations de base sur l'utilisateur fournies par Casdoor. Vous pouvez l'utiliser pour définir la session dans votre application.

@RequestMapping("login")
public String login(String code, String state, HttpServletRequest request) {
String token = "";
CasdoorUser user = null;
try {
token = casdoorAuthService.getOAuthToken(code, state);
user = casdoorAuthService.parseJwtToken(token);
} catch (CasdoorAuthException e) {
e.printStackTrace();
}
HttpSession session = request.getSession();
session.setAttribute("casdoorUser", user);
return "redirect:/";
}

Services

Des exemples d'API sont montrés ci-dessous :

  • CasdoorAuthService
    • String token = casdoorAuthService.getOAuthToken(code, "app-built-in");
    • CasdoorUser casdoorUser = casdoorAuthService.parseJwtToken(token);
  • CasdoorUserService
    • CasdoorUser casdoorUser = casdoorUserService.getUser("admin");
    • CasdoorUser casdoorUser = casdoorUserService.getUserByEmail("admin@example.com");
    • CasdoorUser[] casdoorUsers = casdoorUserService.getUsers();
    • CasdoorUser[] casdoorUsers = casdoorUserService.getSortedUsers("created_time", 5);
    • int count = casdoorUserService.getUserCount("0");
    • CasdoorResponse response = casdoorUserService.addUser(user);
    • CasdoorResponse response = casdoorUserService.updateUser(user);
    • CasdoorResponse response = casdoorUserService.deleteUser(user);
  • CasdoorEmailService
    • CasdoorResponse response = casdoorEmailService.sendEmail(title, content, sender, receiver);
  • CasdoorSmsService
    • CasdoorResponse response = casdoorSmsService.sendSms(randomCode(), receiver);
  • CasdoorResourceService
    • CasdoorResponse response = casdoorResourceService.uploadResource(user, tag, parent, fullFilePath, file);
    • CasdoorResponse response = casdoorResourceService.deleteResource(file.getName());

Plus de Ressources

Vous pouvez explorer les projets/docs suivants pour en savoir plus sur l'intégration de Java avec Casdoor :