Skip to Main Content
☕ Ủng hộ cafe

☕ Mời mình một ly cafe

Nếu tài liệu này hữu ích, bạn có thể ủng hộ mình một ly cafe để mình có thêm động lực viết tiếp ❤️

QR Support
Ngân hàng: VC Bank
Chủ tài khoản: DO KHAC LAM
Số tài khoản: 7906077097
Nội dung: Ung ho Dokhala
Cảm ơn bạn đã ủng hộ Dokhala 🙏
💬 Liên hệ

💬 Kết nối với mình

Bạn cần hỏi thêm về Oracle APEX, góp ý nội dung, hoặc muốn trao đổi dự án? Có thể nhắn mình qua các kênh dưới đây.

← Quay lại bài viết

Hiểu đúng về Open Door Credentials trong Oracle APEX

Tìm hiểu Open Door Credentials trong Oracle APEX là gì, khi nào nên dùng trong development, rủi ro nếu đưa lên production và checklist an toàn trước khi deploy.

Khi phát triển ứng dụng Oracle APEX, có những lúc developer cần đăng nhập nhanh bằng nhiều user khác nhau để kiểm tra phân quyền, giao diện, dữ liệu hiển thị hoặc luồng xử lý theo vai trò.

Nếu ứng dụng dùng SSO, LDAP, Social Sign-In hoặc một hệ thống xác thực bên ngoài, việc test nhiều user trong môi trường development đôi khi khá mất thời gian. Bạn có thể phải tạo tài khoản thật, cấu hình identity provider, xin quyền, hoặc đổi qua đổi lại nhiều phiên đăng nhập.

Trong tình huống này, Open Door Credentials của Oracle APEX có thể là một công cụ hữu ích. Nó cho phép developer đăng nhập vào ứng dụng bằng một username bất kỳ, giúp mô phỏng nhanh nhiều user trong quá trình development và troubleshooting.

Tuy nhiên, đây cũng là một authentication scheme rất nguy hiểm nếu dùng sai chỗ. Open Door Credentials chỉ nên dùng trong môi trường phát triển hoặc kiểm thử có kiểm soát. Tuyệt đối không nên để scheme này hoạt động trong production.

Open Door Credentials là gì?

Open Door Credentials là một authentication scheme có sẵn trong Oracle APEX. Khi bật scheme này, APEX cung cấp một login page đơn giản để người dùng nhập username.

Điểm quan trọng là password không còn đóng vai trò xác thực thật sự. Nói cách khác, cơ chế này mở cửa cho người dùng nhập username để vào ứng dụng, miễn là ứng dụng không có lớp kiểm soát bổ sung phía sau.

Vì vậy, tên gọi “Open Door” rất đúng nghĩa: nó mở cửa để developer đi vào ứng dụng nhanh hơn trong giai đoạn phát triển. Nhưng nếu để mở nhầm ở production, đây sẽ là rủi ro bảo mật nghiêm trọng.

Lược đồ sử dụng an toàn

Open Door Credentials trong Oracle APEX

DEV Only

Chỉ dùng trong môi trường development hoặc test được kiểm soát.

Impersonate

Nhập username để kiểm tra giao diện, dữ liệu và phân quyền theo user.

Remove Before PROD

Xóa hoặc vô hiệu hóa scheme trước khi export/deploy lên production.

Open Door Credentials không phải cơ chế bảo mật cho production. Nó là công cụ hỗ trợ development, troubleshooting và kiểm thử nhanh.

Khi nào nên dùng Open Door Credentials?

Open Door Credentials phù hợp trong các trường hợp sau:

  • Ứng dụng đang ở môi trường development.
  • Developer cần test nhiều user khác nhau.
  • Ứng dụng production dùng SSO nhưng môi trường dev chưa cấu hình SSO đầy đủ.
  • Cần kiểm tra authorization scheme theo username hoặc role.
  • Cần debug giao diện hoặc dữ liệu theo từng user.
  • Cần troubleshooting nhanh mà không muốn phụ thuộc vào identity provider bên ngoài.

Ví dụ, ứng dụng của bạn có user MANAGER01, SALES01, ADMIN01. Khi dùng Open Door Credentials trong DEV, bạn có thể nhập từng username này để kiểm tra:

  • User có thấy đúng menu không?
  • User có vào được page cần thiết không?
  • Report có lọc đúng dữ liệu theo user không?
  • Button hoặc process có bị ẩn/hiện đúng theo quyền không?

Không nên hiểu nhầm Open Door Credentials là bảo mật

Một sai lầm rất nguy hiểm là nghĩ rằng Open Door Credentials vẫn kiểm tra mật khẩu. Với scheme này, trọng tâm không phải là xác thực password.

Vì vậy, nếu ứng dụng chỉ dựa vào authentication để bảo vệ dữ liệu, Open Door Credentials có thể khiến bất kỳ ai biết URL ứng dụng đều có thể thử nhập username và truy cập.

Trong môi trường production, điều này là không thể chấp nhận. Một ứng dụng production cần authentication thật sự như APEX Accounts, LDAP, SAML, Social Sign-In, OAuth/OpenID Connect hoặc một cơ chế enterprise SSO phù hợp.

Cần kết hợp với Authorization nếu test theo user

Nếu dùng Open Door Credentials trong DEV để mô phỏng user, bạn nên đảm bảo ứng dụng vẫn có lớp authorization rõ ràng.

Ví dụ, application-level authorization nên kiểm tra user có tồn tại trong bảng user nội bộ hay không:

select 1
from app_users
where upper(username) = upper(:APP_USER)
  and status = 'ACTIVE'

Hoặc dùng function:

return security_pkg.is_valid_user(:APP_USER);

Cách này giúp tránh trường hợp developer nhập một username hoàn toàn không tồn tại nhưng vẫn đi sâu vào ứng dụng và tạo kết quả test sai.

Tuy nhiên, cần nhấn mạnh: authorization check không biến Open Door Credentials thành cơ chế production-safe. Nó chỉ giúp quá trình test trong DEV thực tế hơn và ít sai lệch hơn.

Cách tạo Open Door Credentials trong APEX

Các bước tổng quát:

  1. Mở ứng dụng trong App Builder.
  2. Vào Shared Components.
  3. Chọn Authentication Schemes.
  4. Bấm Create.
  5. Chọn tạo từ pre-configured scheme gallery.
  6. Chọn scheme type là Open Door Credentials.
  7. Tạo authentication scheme.
  8. Chỉ đặt làm current scheme trong môi trường DEV/TEST phù hợp.

Sau khi bật, APEX sẽ dùng login page cho phép nhập username. Tùy môi trường và phiên bản APEX, giao diện login có thể yêu cầu nhập username, hoặc có thể có thêm ô password nhưng password không phải yếu tố xác thực thật.

Ví dụ quy trình test phân quyền

Giả sử ứng dụng có ba vai trò:

  • ADMIN: quản trị toàn hệ thống.
  • MANAGER: xem dữ liệu phòng ban.
  • USER: chỉ xem dữ liệu cá nhân.

Bạn có thể dùng Open Door Credentials trong DEV để test nhanh:

  1. Login bằng ADMIN01.
  2. Kiểm tra menu quản trị có hiển thị không.
  3. Logout.
  4. Login bằng MANAGER01.
  5. Kiểm tra report có lọc theo phòng ban không.
  6. Logout.
  7. Login bằng USER01.
  8. Kiểm tra user chỉ thấy dữ liệu của chính mình.

Quy trình này giúp developer phát hiện nhanh lỗi authorization, lỗi lọc dữ liệu, hoặc lỗi logic dựa trên :APP_USER.

Rủi ro lớn nhất: quên xóa trước khi deploy

Rủi ro lớn nhất của Open Door Credentials không nằm ở bản thân nó, mà nằm ở việc developer quên xóa hoặc vô hiệu hóa nó trước khi deploy lên production.

Trong một dự án có nhiều môi trường như DEV, TEST, UAT, PROD, nếu export ứng dụng từ DEV rồi import lên PROD mà không kiểm tra authentication scheme, bạn có thể vô tình đưa Open Door Credentials vào production.

Vì vậy, cần có checklist release rõ ràng.

Checklist trước khi deploy production

  • Current Authentication Scheme có phải scheme production thật không?
  • Có còn Open Door Credentials trong danh sách Authentication Schemes không?
  • Login page production có đang dùng SSO/APEX Accounts/LDAP/SAML đúng không?
  • Application-level Authorization Scheme có đang bật không?
  • Page Access Protection có được cấu hình đúng không?
  • Session State Protection có phù hợp không?
  • Public pages có đúng là public thật sự không?
  • APP_USER có được map đúng từ identity provider không?
  • Có test thử bằng user không hợp lệ chưa?
  • Có kiểm tra lại sau khi import app lên PROD chưa?

Có nên giữ Open Door Credentials trong app không?

Nếu ứng dụng chỉ nằm trong DEV và không bao giờ export đi production, bạn có thể giữ scheme này để tiện test.

Nhưng với ứng dụng có quy trình deploy sang TEST/UAT/PROD, tốt hơn là phải có quy tắc rõ:

  • Chỉ tạo Open Door Credentials trong môi trường DEV.
  • Không để scheme này là current scheme trong bản export production.
  • Xóa scheme trước khi đóng gói release nếu cần.
  • Ghi checklist kiểm tra authentication trong release process.

Nếu team có nhiều developer, quy tắc này nên được ghi trong tài liệu dự án, không nên chỉ dựa vào trí nhớ của một người.

Phân biệt Open Door Credentials và No Authentication

Open Door Credentials và No Authentication đều có thể làm ứng dụng dễ truy cập hơn, nhưng ý nghĩa khác nhau.

Với No Authentication, ứng dụng không yêu cầu login theo nghĩa thông thường. Cách này phù hợp với các page public thật sự, ví dụ landing page, tài liệu, form public hoặc tra cứu công khai.

Với Open Door Credentials, ứng dụng vẫn có khái niệm username và :APP_USER, nhưng username đó không được xác thực bằng password thật. Điều này hữu ích khi bạn muốn test logic phụ thuộc vào :APP_USER.

Nếu mục tiêu là test user-specific behavior, Open Door Credentials thường hữu ích hơn No Authentication. Nếu mục tiêu là làm page công khai thật sự, No Authentication hoặc public page configuration có thể phù hợp hơn.

Giải pháp thay thế an toàn hơn

Trong nhiều trường hợp, thay vì dùng Open Door Credentials, bạn có thể dùng các phương án khác:

  • Dùng Oracle APEX Accounts và tạo test users.
  • Dùng SSO test tenant riêng.
  • Dùng LDAP/SAML/OIDC test environment.
  • Tạo nhóm user test có password thật.
  • Dùng feature flag hoặc cấu hình môi trường để chọn authentication scheme.

Các phương án này có thể mất công hơn, nhưng phù hợp hơn nếu môi trường test cần gần production hoặc có yêu cầu bảo mật cao.

Best practice khi dùng Open Door Credentials

  • Chỉ dùng trong DEV hoặc sandbox.
  • Không dùng trong production.
  • Không dùng cho dữ liệu thật hoặc dữ liệu nhạy cảm.
  • Kết hợp với authorization để kiểm tra user hợp lệ.
  • Đặt tên scheme thật rõ, ví dụ DEV_ONLY_OPEN_DOOR.
  • Ghi chú trong mô tả scheme rằng không được deploy lên PROD.
  • Kiểm tra authentication scheme trước mỗi lần export/import.
  • Đưa kiểm tra này vào release checklist.
  • Test bằng username không hợp lệ để chắc authorization hoạt động.
  • Xóa hoặc vô hiệu hóa scheme trước khi đóng gói production release.

Ví dụ đặt tên scheme rõ ràng

Không nên đặt tên chung chung như:

Open Door
Test Login
Login Dev

Nên đặt tên thật rõ:

DEV_ONLY_OPEN_DOOR_DO_NOT_DEPLOY
DEV_TEST_IMPERSONATION_ONLY
LOCAL_DEV_OPEN_DOOR_AUTH

Tên dài hơn một chút nhưng giúp giảm nguy cơ nhầm lẫn khi nhiều người cùng bảo trì ứng dụng.

Khi nào không nên dùng?

Không nên dùng Open Door Credentials trong các trường hợp:

  • Production.
  • UAT có dữ liệu thật hoặc gần thật.
  • Môi trường có thể truy cập từ Internet mà không giới hạn IP/VPN.
  • Ứng dụng chứa dữ liệu khách hàng, tài chính, nhân sự hoặc thông tin nhạy cảm.
  • Team không có checklist release rõ ràng.
  • Developer chưa hiểu rõ cơ chế hoạt động của scheme này.

Kết luận

Open Door Credentials là một công cụ hữu ích trong Oracle APEX nếu dùng đúng mục đích. Nó giúp developer đăng nhập nhanh bằng nhiều username khác nhau, kiểm tra phân quyền, debug dữ liệu theo user và phát triển ứng dụng thuận tiện hơn trong môi trường DEV.

Nhưng đây không phải là cơ chế authentication an toàn cho production. Password không phải yếu tố xác thực thật sự, nên nếu dùng sai môi trường, Open Door Credentials có thể mở ra rủi ro bảo mật nghiêm trọng.

Cách dùng đúng là: chỉ dùng trong development, đặt tên rõ ràng, kết hợp authorization để test user hợp lệ, không dùng với dữ liệu nhạy cảm, và luôn kiểm tra/xóa trước khi deploy production.

Với kỷ luật release tốt, Open Door Credentials có thể giúp quá trình phát triển APEX nhanh hơn. Nhưng nếu thiếu kiểm soát, nó có thể trở thành một “cánh cửa mở” đúng nghĩa trong hệ thống của bạn.