Login
Gateway web UI entry screen. After login, access to all /ui/* UI routes is available.
During initial install.sh installation, a random password is automatically generated for each box (it may not be the default admin123!).
If SSH access to the box is possible:
sudo cat /etc/kopens/credentials.txt # chmod 0600 root, 박스 안에서만
This file contains the admin / mqtt / opcua / API key / keystore passwords in one place. For factory provisioning, we recommend printing/saving the file and then sealing the box.
1. Screen Layout
┌─────────────────────────────────────────────┐
│ ░░░ 다중 SVG 웨이브 (5겹) + 오로라 + 빛 점 │
│ │
│ 🌀 (회전 로고) │
│ 플랜트펄스 │
│ 엣지 │
│ [HOSTNAME 뱃지] │
│ │
│ 👤 [사용자 ID] │
│ 🔑 [패스워드] │
│ │
│ [🔓 로그인] │
│ │
│ KOPENS © │
│ │
│ ┌──────────────┐ │
│ │ IIoT 게이트 │ │
│ │ 웨이 일러스트 │ │
│ └──────────────┘ │
└─────────────────────────────────────────────┘
1.1 Background Visual Effects
- Dark navy gradient —
linear-gradient(135deg, #061830 0%, #0a2452 35%, #07182f 75%, #03101f 100%) - 5-layer SVG waves (
.login_wave .wv1~.wv5) — flowing smoothly with different amplitudes/phases - Aurora conic-gradient (
.login_aurora) — slowly rotating from the screen center - 6 light orbs (
.orb) — radial-gradient, floating at different coordinates - IIoT gateway illustration at the bottom right (
.edge_pc_deco .edge_gw_svg) — clamp(200px, 22vw, 320px) drop-shadow + breathe animation. Used to visualize the identity of PlantPulse Edge
These effects are defined in inline
<style>orpp-login.css— they disappear when you navigate to other pages (applied only to the login page).
1.2 Form Area
| Area | Content |
|---|---|
| Logo + Name | PlantPulse Edge logo (rotating) + Korean title |
| HOSTNAME badge | ${edge_context.hostname} — immediately identifies which gateway you are on |
| User ID | English letters/numbers/@ — placeholder User ID |
| Password | Sent in plaintext — HTTPS recommended |
| Login button | submit |
2. Operation Flow
| Step | Result |
|---|---|
| Form submit | POST /login/login (user_id + password) |
| Response OK | Shows loading spinner for 3 seconds (fa-spinner-third fa-spin) → navigate to /ui/main |
| Response failure | alert box (shake animation, red highlight) — "Please verify your login ID and password and enter them correctly." |
User information is stored in session attribute _USER_LOGIN (JSONObject) — UserFilter / ApiAuthFilter determine session pass/fail based on this attribute.
It gives time for the platform-side token verification/redirect race to settle. If you move to /ui/main too quickly, the initial connection may get a 401 auth redirect and re-enter the login screen — this delay is intentional for UX stability.
3. Input Validation
| Field | Constraint |
|---|---|
| User ID | 4–20 characters (English letters / numbers / @ etc.) |
| Password | 4–20 characters, sent in plaintext (HTTPS recommended) |
required="true" — HTML5 validation blocks empty values. minlength/maxlength are also applied.
4. Common Pitfalls
| Symptom | Cause / Solution |
|---|---|
| Re-login screen immediately after login | Session cookie blocked / mixed domain (HTTPS ↔ HTTP). Access using the same origin |
| All passwords rejected | Cassandra pe.app_user_login table is empty. Ask the system administrator to register an initial user |
| Session keeps dropping | Tomcat session timeout is short — increase security.session.timeout.minutes in app.properties. Or use PersistentManager + FileStore configuration (already applied — session persists across restarts) |
| Concurrent login from another PC | Allowed (multiple sessions) — RBAC / single login enforcement not supported |
| IIoT illustration not visible | Browser zoom is too small or viewport is very narrow (the clamp minimum 200px is larger than the viewport). Desktop recommended |
5. Security Notes
- HTTPS recommended — Enforce HTTPS when exposed to the external network (place behind a Tomcat connector or nginx/Apache reverse proxy)
- REST
/api/v1/*requires authentication —ApiAuthFilterpasses if it satisfies any of the following auth methods:X-API-Keyheader (value injected viaEDGE_REST_API_KEY_FILEorEDGE_REST_API_KEY)Authorization: Bearer <key>header- Or login session (already logged in via browser) — session passes if
_USER_LOGINattribute exists
?api_key=<key>query parameters can leave keys in URL history/proxy cache, so they are rejected with 401- Keys are configured in
edge.rest.api.keyofapp.propertiesand enforced only whenedge.rest.api.auth=true. For details, see REST API Guide - API call audit logs — every
/api/*call is logged in a single line byApiAccessLogFilter(method/path/status/duration/IP/user/auth mode/UA). IP is based on the defaultRemoteAddr, and the apikey plaintext is masked to the first 4 characters + length - Password change — gear icon at the top right → Settings →
edge.admin_password→ Save → Restart (Details)
Learn More
- First screen after login: Home Screen
- Password/API key change: Password · API Key Change
- REST API authentication details: REST API Guide