메인 콘텐츠로 건너뛰기

Spring Boot

casdoor-spring-boot-example은 스프링 부트 프로젝트에서 casdoor-spring-boot-starter를 사용하는 방법의 예시입니다. 아래의 단계를 통해 안내하겠습니다.

단계 1: Casdoor 배포

먼저, Casdoor를 배포해야 합니다.

서버 설치에 대해서는 Casdoor 공식 문서를 참조하실 수 있습니다. Casdoor 인스턴스를 프로덕션 모드에서 배포해 주세요.

성공적인 배포 후, 다음을 확인하세요:

  • 선호하는 브라우저를 열고 http://localhost:8000을 방문하세요. Casdoor의 로그인 페이지를 볼 수 있습니다.
  • 사용자 이름에 admin을, 비밀번호에 123을 입력하여 로그인 기능을 테스트하세요.

이제, 다음 단계를 사용하여 자신의 앱에서 Casdoor 기반 로그인 페이지를 빠르게 구현할 수 있습니다.

단계 2: casdoor-spring-boot-starter 가져오기

Maven 또는 Gradle을 사용하여 casdoor-spring-boot-starter를 가져올 수 있습니다.

<!-- 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>

단계 3: 설정 초기화

초기화에는 다음 순서대로 6개의 문자열 유형 매개변수가 필요합니다: | 이름 | 필수 | 설명 | | ---------------- | --- | --------------------------------------------- | | endpoint | 예 | Casdoor 서버 URL, 예를 들어 http://localhost:8000 | | clientId | 예 | 응용 프로그램 클라이언트 ID | | clientSecret | 예 | 응용 프로그램 클라이언트 비밀번호 | | certificate | 예 | 응용 프로그램 인증서 | | organizationName | 예 | 응용 프로그램 구성 | | applicationName | 아니오 | 응용 프로그램 이름 | 초기화를 위해 Java 속성이나 YAML 파일을 사용할 수 있습니다.

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
주의

설정 값을 자신의 Casdoor 인스턴스로 교체하십시오, 특히 clientId, clientSecret, 그리고 jwtPublicKey.

단계 4: 로그인 페이지로 리디렉션

앱에 접근하는 사용자를 인증해야 할 때, 대상 URL을 보내고 Casdoor에서 제공하는 로그인 페이지로 리디렉션할 수 있습니다. 애플리케이션 구성에서 미리 콜백 URL (예: http://localhost:8080/login)을 추가했는지 확인하십시오.

@Resource
private CasdoorAuthService casdoorAuthService;

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

단계 5: 토큰 가져오기 및 파싱

Casdoor 검증이 통과되면 코드와 상태를 가지고 애플리케이션으로 다시 리디렉션됩니다.

코드를 얻고 getOAuthToken 메소드를 호출한 다음 JWT 토큰을 파싱할 수 있습니다.

CasdoorUser는 Casdoor에서 제공하는 사용자의 기본 정보를 포함하고 있습니다. 이를 사용하여 애플리케이션에서 세션을 설정할 수 있습니다.

@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:/";
}

서비스

API 예시는 아래에 표시되어 있습니다:

  • 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());

추가 자료

다음 프로젝트/문서를 탐색하여 Java와 Casdoor를 통합하는 방법에 대해 더 자세히 알아볼 수 있습니다: