Spring Boot
casdoor-spring-boot-exampleは、Spring Bootプロジェクトで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
特にclientId
、clientSecret
、jwtPublicKey
については、自分のCasdoorインスタンスの設定値に置き換えてください。
ステップ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の統合についてもっと学ぶために、以下のプロジェクト/ドキュメントを探索できます: