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

Deploy Casdoor in production mode. See Server installation. Ensure the server is reachable and you can sign in (e.g. admin / 123).

É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 :

NomRequisDescription
endpointOuiURL du serveur Casdoor, comme http://localhost:8000
clientIdOuiID client de l'application
clientSecretOuiSecret client de l'application
certificateOuiCertificat de l'application
organizationNameOuiOrganisation de l'application
applicationNameNonNom 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

To authenticate users, redirect them to Casdoor’s login page (with the target URL as needed). Make sure you have added the callback URL (e.g. http://localhost:8080/login) in the application configuration beforehand.

@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 :