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를 가져올 수 있습니다.
- Maven
- 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>
// https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter
implementation group: 'org.casbin', name: 'casdoor-spring-boot-starter', version: '1.x.y'
단계 3: 설정 초기화
초기화에는 다음 순서대로 6개의 문자열 유형 매개변수가 필요합니다:
| 이름 | 필수 | 설명 |
| ---------------- | --- | --------------------------------------------- |
| endpoint | 예 | Casdoor 서버 URL, 예를 들어 http://localhost:8000
|
| clientId | 예 | 응용 프로그램 클라이언트 ID |
| clientSecret | 예 | 응용 프로그램 클라이언트 비밀번호 |
| certificate | 예 | 응용 프로그램 인증서 |
| organizationName | 예 | 응용 프로그램 구성 |
| applicationName | 아니오 | 응용 프로그램 이름 |
초기화를 위해 Java 속성이나 YAML 파일을 사용할 수 있습니다.
- Properties
- YML
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:
endpoint: http://localhost:8000
client-id: <client-id>
client-secret: <client-secret>
certificate: <certificate>
organization-name: built-in
application-name: 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를 통합하는 방법에 대해 더 자세히 알아볼 수 있습니다: