UCIDM サーバー

UCIDM サーバーにおけるアプリケーションやミドルウェアの詳細なシステム概要を次に示します。

UCIDM サーバーとコンテナレジストリ

アプリケーションのコンテナは Docker Compose で管理しています。コンテナを作成するにはインターネット上のコンテナレジストリからコンテナイメージを取得しておく必要があります。

flowchart LR

subgraph cr [コンテナレジストリ]
  repo[リポジトリ]
end

subgraph server [UCIDM サーバー]
  subgraph compose[Docker Compose]
  end
end

compose -- "docker pull" --> repo
repo -- image --> compose

UCIDM サーバー内部のサービス詳細

Docker Compose 内部で複数のサービスが協調してシステムを構成しています。

内部ディレクトリサービスと Agent モジュールのデータフロー

flowchart TB

subgraph in-directory-service [内部向けディレクトリサービス]
  subgraph windows [Windows サーバー]
    adserver[Active Directory]
    passsync-agent-ad[Agent PassSync\nFor AD]
  end
  subgraph linux [Linux サーバー]
    in-ldapserver[OSSTech OpenLDAP サーバー]
    passsync-agent-ldap[Agent PassSync\nFor OpenLDAP]
  end
end

subgraph server [UCIDM サーバー]
  subgraph compose[Docker Compose]
    agent[Agent]
    proxy["リバースプロキシ\n(TLS 終端)"]
    api[UCIDM API]
  end
end

adserver -- event --> passsync-agent-ad
passsync-agent-ad -- https --> proxy
in-ldapserver -- event --> passsync-agent-ldap
passsync-agent-ldap -- https --> proxy

adserver -- ldaps --> agent
in-ldapserver -- ldaps --> agent

agent -- https --> proxy
proxy -- http --> api

UCIDM サーバーと外部サービスのデータフロー

flowchart TB

subgraph server [UCIDM サーバー]
  subgraph compose[Docker Compose]
    agent[Agent]
    admin-ui-bff[Admin UI]
    ucidm-ui-bff[UCIDM UI]
    proxy["リバースプロキシ\n(TLS 終端)"]
    api[UCIDM\nAPI]
    client[外部連携\nモジュール]

    client o--o mongodb
    api o--o mongodb(MongoDB)
    api -- publish --> rabbitmq(RabbitMQ)
  end
end

subgraph in-directory-service [内部向けディレクトリサービス]
  subgraph ldap-server [LDAP サーバー]
  end
end

subgraph ext-directory-service [外部向けサービス]
  ext-openldap[OpenLDAP]
  ext-ad[Active Directory]
  ext-google[Google Workspace]
  ext-me-id[Microsoft Entra ID]
  ext-scim[SCIM]
end

in-directory-service -- ldaps/https --> agent
api -- ldaps --> ldap-server

agent -- https --> proxy
proxy -- http --> admin-ui-bff
proxy -- http --> ucidm-ui-bff
admin-ui-bff -- https --> proxy
ucidm-ui-bff -- https --> proxy
proxy -- http --> api
rabbitmq -- subcribe --> client

admin-ui-bff -- アセット --> admin-ui(ID 連携\n管理画面)
admin-ui o--o sysadmin(システム\n管理者)
admin-ui -- https --> proxy

ucidm-ui-bff -- アセット --> ucidm-ui(ユーザー\nプロファイル\n画面)
ucidm-ui o--o user(一般\nユーザー)
ucidm-ui -- https --> proxy

client -- ldaps/https --> ext-directory-service

UCIDM サーバーと周辺サービス全体

前節の図を1つに統合したデータフローです。

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%
flowchart TB

subgraph server [UCIDM サーバー]
  subgraph compose[Docker Compose]
    agent[Agent]
    admin-ui-bff[Admin UI]
    ucidm-ui-bff[UCIDM UI]
    proxy["リバースプロキシ\n(TLS 終端)"]
    api[UCIDM API]
    client[外部連携モジュール]

    api o--o mongodb(MongoDB)
    api -- publish --> rabbitmq(RabbitMQ)
    client o--o mongodb
  end
end

subgraph in-directory-service [内部向けディレクトリサービス]
  subgraph windows [Windows サーバー]
    adserver[Active Directory]
    passsync-agent-ad[Agent PassSync\nFor AD]
  end
  subgraph linux [Linux サーバー]
    in-ldapserver[OSSTech OpenLDAP サーバー]
    passsync-agent-ldap[Agent PassSync\nFor OpenLDAP]
  end
end

subgraph ext-directory-service [外部向けサービス]
  ext-openldap[OpenLDAP]
  ext-ad[Active Directory]
  ext-google[Google Workspace]
  ext-me-id[Microsoft Entra ID]
  ext-scim[SCIM]
end

adserver -- event --> passsync-agent-ad
in-ldapserver -- event --> passsync-agent-ldap
passsync-agent-ad -- https --> proxy
passsync-agent-ldap -- https --> proxy

adserver -- ldaps --> agent
in-ldapserver -- ldaps --> agent

api -- ldaps --> in-directory-service

agent -- https --> proxy
proxy -- http --> admin-ui-bff
proxy -- http --> ucidm-ui-bff
admin-ui-bff -- https --> proxy
ucidm-ui-bff -- https --> proxy
proxy -- http --> api
rabbitmq -- subcribe --> client

admin-ui-bff -- アセット --> admin-ui(ID 連携管理画面)
admin-ui o--o sysadmin(システム管理者)
admin-ui -- https --> proxy

ucidm-ui-bff -- アセット --> ucidm-ui(ユーザープロファイル画面)
ucidm-ui o--o user(一般ユーザー)
ucidm-ui -- https --> proxy

client -- ldaps/https --> ext-directory-service