DolphinScheduler、IoTDB およびその他の Apache データプラットフォーム:Casdoor を使った SSO
いくつかの Apache データおよびミドルウェアプロジェクトは、独自の Casdoor ログイン機能を備えています:Apache DolphinScheduler には CASDOOR_SSO という認証タイプ(3.2.0 以降)と汎用 OIDC モード(3.4.0 以降)があり、Apache ShenYu には Casdoor プラグイン(2.5.1 以降)、Apache Pulsar Manager には「Log in with Casdoor」ボタン(0.3.0 以降)、Apache APISIX には authz-casdoor プラグイン(2.14.0 以降)があります。Apache IoTDB は例外です:データベース自体は独自ユーザーとパスワードで認証を行い、現在アーカイブされた IoTDB Web Workbench のみが Casdoor と通信します。下表はすべてのプロジェクト、バージョン、および設定場所を一覧にしたものであり、記事の後半では IoTDB でのユーザー認証設定をステップバイステップで解説します。
Casdoor をサポートする Apache プロジェクト
この表のすべての事実は、各プロジェクトのソースツリーとリリースタグに基づいており、2026年11月2日に確認されました。
| プロジェクト | Casdoor との接続方法 | 初回リリース | 設定 |
|---|---|---|---|
| Apache DolphinScheduler | 組み込みの CASDOOR_SSO 認証タイプ(Casdoor Java SDK、OAuth 2.0 コードフロー) | 3.2.0 | dolphinscheduler-api/src/main/resources/application.yaml 内の security.authentication.type、casdoor.* |
| Apache DolphinScheduler | 汎用 OIDC ログイン(Spring Security) | 3.4.0 | 同じファイル内の security.authentication.oidc.* |
| Apache IoTDB Web Workbench | Web コンソールでの Casdoor ログイン | タグ付きリリースなし、リポジトリはアーカイブ済み | backend/src/main/resources/application.properties 内の casdoor.*、frontend/.env 内の VUE_APP_CASDOOR |
| Apache IoTDB (サーバー) | ネイティブなユーザーとロール;OpenIdAuthorizer は 2.0.8 まで存在しましたが削除されました | n/a | 以下の IoTDB セクションを参照 |
| Apache ShenYu | ゲートウェイ上の Casdoor プラグイン | 2.5.1 | プラグイン設定 endpoint、client_id、client_secrect、certificate、organization-name、application-name |
| Apache Pulsar Manager | パスワードフォームの横にある「Log in with Casdoor」ボタン | 0.3.0 | src/main/resources/application.properties 内の casdoor.*;0.4.0 以降のフロントエンド設定は front-end/src/main.js にあります |
| Apache ShardingSphere ElasticJob UI | 「Login with Casdoor」ボタン | master ブランチのみ、3.0.2 以降 | バックエンドの application.properties 内の casdoor.* |
| Apache APISIX | authz-casdoor プラグイン、または openid-connect | 2.14.0 | endpoint_addr、client_id、client_secret、callback_url |
| RuoYi-Cloud (Apache プロジェクトではない) | Casdoor Spring Boot SDK を使用したコード変更 | n/a | 独自のログインコントローラー |
表内のすべての SDK ベースの統合は同じパターンに従います。Casdoor でアプリケーションを作成し、そのクライアント ID、クライアントシークレット、およびトークン証明書の公開鍵をコピーして、組織名とアプリケーション名とともにプロジェクトの設定に貼り付けます。プロジェクトはブラウザを Casdoor にリダイレクトし、認可コードを受け取って JWT に交換し、証明書で JWT を検証します。証明書は Casdoor 管理コンソールの Certs にあるものを使用します。certificates と application settings reference の Token cert フィールドを参照してください。
Apache DolphinScheduler
DolphinScheduler には 2 つの方法があります。
CASDOOR_SSO は 3.2.0 から存在しています。タイプを設定し、dolphinscheduler-api/src/main/resources/application.yaml のトップレベル casdoor ブロックを入力します:
security:
authentication:
type: CASDOOR_SSO
casdoor:
user:
admin: "alice" # this Casdoor user becomes a DolphinScheduler admin
casdoor:
endpoint: https://door.example.com
client-id: <client id>
client-secret: <client secret>
certificate: |-
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
organization-name: my-org
application-name: app-dolphinscheduler
redirect-url: http://localhost:5173/login
redirect-url は DolphinScheduler UI のログインページであり、Casdoor アプリケーションの Redirect URLs にも含まれている必要があります。初回ログイン時、DolphinScheduler は Casdoor のユーザー名とメールアドレスを使用してローカルユーザーを作成します。security.authentication.casdoor.user.admin に指定されたユーザーは管理者タイプになり、他のすべてのユーザーは一般ユーザーになります。私たちの DolphinScheduler guide にスクリーンショットがあります。
OIDC は 3.4.0 で登場しました。これは汎用的なため、Casdoor は通常の発行者として機能します。Spring Security の検出では、設定された発行者が発行ドキュメント内の issuer と一致する必要がありますが、Casdoor の発行者はバックエンドのオリジンであるため、issuer-uri は単なる Casdoor URL です:
api:
base-url: https://ds.example.com/dolphinscheduler
ui-url: https://ds.example.com
security:
authentication:
type: OIDC
oidc:
enable: true
providers:
casdoor:
display-name: "Login with Casdoor"
issuer-uri: https://door.example.com
client-id: <client id>
client-secret: <client secret>
scope: openid, profile, email
user-name-attribute: preferred_username
groups-claim: groups
user:
auto-create: true
default-tenant-code: "default"
default-queue: "default"
admin-group-mapping:
- my-org/ds-admins
Casdoor に登録するリダイレクト URL は https://ds.example.com/dolphinscheduler/login/oauth2/code/casdoor です。これは api.base-url に /login/oauth2/code/ とプロバイダーキーを追加したものです。profile スコープを使用すると、Casdoor の UserInfo エンドポイントは preferred_username と groups を返します。デフォルトでは、グループは my-org/ds-admins の形式で届きます。admin-group-mapping に ds-admins と記述したい場合は、アプリケーションで Token group format を Name (group) に設定してください。auto-create が false(上流のデフォルト)の場合、すでに DolphinScheduler に存在するユーザーのみがサインインできます。standard OIDC client guide には、発行ドキュメントと UserInfo が返す内容が記載されています。
Apache ShenYu
Casdoor プラグインは 2.5.1 以来、ShenYu ゲートウェイに含まれています。ShenYu 管理コンソールで有効にし、プラグインデータを入力します。ドキュメントではなくソースから得られる詳細が 2 つあります。第一に、シークレットキーは client_secrect と綴られています。第二に、証明書フィールドは単一行であるため、改行ごとに \n を記述します。プラグインは Authorization ヘッダーからの JWT、またはクエリ文字列上の code と state を受け入れます。その後、ヘッダー name、id、および organization でユーザーを下流に渡します。いずれも含まないリクエストはリダイレクトされず、トークンエラーで拒否されます。ShenYu の master ブランチ(2026 年 10 月)では、プラグインはメインリポジトリから ShenYu プラグインストアに移されました。プラグイン名、フィールド、およびヘッダーは同じままで、スターター shenyu-spring-boot-starter-plugin-casdoor を自分で追加します。Using Casdoor in ShenYu を参照してください。
Apache Pulsar Manager and ShardingSphere ElasticJob UI
Pulsar Manager は 0.3.0 で Casdoor を追加しました。バックエンドは src/main/resources/application.properties から casdoor.endpoint、casdoor.clientId、casdoor.clientSecret、casdoor.certificate、casdoor.organizationName、および casdoor.applicationName を読み取ります。0.4.0 以降、フロントエンドは casdoor-vue-sdk を使用しており、front-end/src/main.js で serverUrl、clientId、organizationName、appName、および redirectPath を設定します。初回の Casdoor ユーザーにはローカル Pulsar Manager アカウントが付与されます。Pulsar Manager を参照してください。
ElasticJob UI、つまり Apache ShardingSphere ElasticJob のコンソールは、2022 年 11 月に Casdoor ログインをマージしました。これは最後のリリース 3.0.2 より後のことなので、master をビルドする必要があります。キーはダッシュを使用します:casdoor.endpoint、casdoor.client-id、casdoor.client-secret、casdoor.certificate、casdoor.organization-name、casdoor.application-name。ShardingSphere を参照してください。
Apache APISIX の場合、両方のプラグインは APISIX でカバーされています。
Apache IoTDB でのユーザー認証セットアップの手順
IoTDB はすべてのセッション(CLI、JDBC、Session API)をデータベースに格納されているユーザー名とパスワードで認証します。サーバー側に Casdoor ログインがないため、セットアップは IoTDB のネイティブユーザーモデルです。以下のステートメントはツリーモデル用です。IoTDB 2.x のテーブルモデルには、table model guide に独自の構文があります。
ステップ 1. root パスワードを変更します。 root は唯一の管理者であり、削除できません。CLI でログインし、強力なパスワードを設定します:
ALTER USER root SET PASSWORD 'Str0ng_Passw0rd!';
ステップ 2. ユーザーを作成します。 ユーザー名とパスワードは 4~32 文字の長さです。文字、数字、および !@#$%^&*()_+-= を含めることができ、V2.0.7 以降ではパスワードはユーザー名と等しくできません。TimechoDB、Timecho の商用 IoTDB ディストリビューションでは、大文字と小文字、数字、シンボルを含む 12~32 文字が必要であり、デフォルトの root パスワードが異なります。同じ方法で変更してください。
CREATE USER ln_reader 'Read_Passw0rd!';
CREATE USER ops_admin 'Ops_Passw0rd!';
ステップ 3. ロール内の権限をグループ化します。 新規ユーザーには権限がありません。シリーズ権限(READ_DATA、WRITE_DATA、READ_SCHEMA、WRITE_SCHEMA、またはエイリアス READ、WRITE、ALL)はパスパターンに対して付与されます:
CREATE ROLE ln_readers;
GRANT READ ON root.ln.** TO ROLE ln_readers;
GRANT ROLE ln_readers TO ln_reader;
ステップ 4. ユーザー管理を委任します。 ここがバージョンによって異なります。V2.0.7 以降、グローバル権限は SYSTEM と SECURITY です。それ以前は、MANAGE_USER、MANAGE_ROLE、MANAGE_DATABASE などに分かれていました。グローバル権限は常に root.** に対して付与されます:
-- IoTDB V2.0.7 and later, TimechoDB
GRANT SECURITY ON root.** TO USER ops_admin;
-- before V2.0.7
GRANT MANAGE_USER, MANAGE_ROLE ON root.** TO USER ops_admin;
ステップ 5. 接続して確認します。
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u ln_reader -pw 'Read_Passw0rd!'
次に LIST PRIVILEGES OF USER ln_reader; を実行します。ユーザーの有効な権限は、自身の権限とロールの権限の和集合です。権限を取り消すには、ユーザーとそれを付与しているすべてのロールから取り消してください。
IoTDBにおけるOIDCはどうなっていますか?
以前のIoTDBバージョンでは、authorizer_provider_class=org.apache.iotdb.commons.auth.authorizer.OpenIdAuthorizerとopenID_urlが使用されていました。クライアントはアクセストークンをユーザー名として渡し、パスワードは空欄でした。このオーソライザーはKeycloakを前提に構築されていました。トークンのrealm_access.rolesにiotdb_adminが含まれている場合にのみユーザーを管理者として扱っており、すべての権限チェックはこのテストに集約されます。また、そのトークンパーサーはほぼ無限のクロックスキューを設定するため、実質的にトークンの有効期限を無視します。Casdoorはrealm_accessを発行しないため、これは適合しませんでした。IoTDBは2026年3月にこれを削除しました(apache/iotdb#17320)。2.0.10および2.0.11には含まれていません。
IoTDBの前にCasdoorアカウントを使用したい場合は、IoTDB Web Workbench統合という選択肢があります。そのリポジトリはGitHubでアーカイブされているため、維持管理された製品ではなく、あくまで出発点として捉えてください。データベース接続自体は、上記の手順で作成したIoTDBユーザーを引き続き使用します。
RuoYi
RuoYi-CloudにはCasdoorのスイッチはありません。当社のRuoYiガイドでは、Casdoor Spring Boot SDKを通じて、パスワードログインをCasdoorの認可コードフローに置き換えます。bcryptを使用して既存のRuoYiユーザーをSyncerでCasdoorに同期するため、それらのパスワードは引き続き機能します。通常のSpring Bootアプリの場合は、Spring Boot SSO with OIDCから始めてください。
参考資料
- Apache DolphinScheduler、認証タイプおよび
application.yaml - Apache IoTDB、権限管理 (V2.0.7以降)、権限管理 (V2.0.7以前)、CLI
- Timecho、TimechoDB権限管理
- apache/iotdb-web-workbench
- Apache ShenYu、Casdoorプラグインおよびプラグインストア移行
- apache/pulsar-managerおよびapache/shardingsphere-elasticjob-ui
- Apache APISIX、authz-casdoor