I. OpenAM là gì?

OpenAM: all-in-one open source access management, đang được phát triển bởi ForgeRock ( Một công ty chịu trách nhiệm phát triển các sản phẩm phần mềm opensource về identity và access management solutions hỗ trợ trên cloud, social, mobile và enterprise environments). OpenAM khi tích hợp vào hệ thống sẽ đảm nhiệm quản lý truy cập ( authentication, authorization ) giúp cho đội phát triển ứng dụng không cần phải triển khai nữa, đồng thời OpenAM hỗ trợ nhiều giải pháp ứng dụng rộng cho toàn doanh nghiệp cũng như giữa các doanh nghiệp nên lợi ích của OpenAM mang lại rất to lớn. Nội dung bài viết sẽ đề cập các giải pháp mà OpenAM hỗ trợ.

Tiền thân của OpenAM là OpenSSO được Oracle phát triển, nhưng đến tháng 2 năm 2010 thì được nhóm các nhà phát triển OpenSSO tách ra thành lập công ty ForgeRock chịu trách nhiệm tiếp tục phát triển OpenSSO nhưng chuyển tên thành OpenAM, phát triển OpenAM vẫn dựa trên roadmap của OpenSSO.

Version mới nhất của OpenAM cho enterprise là 13.0.0.

II. Key features

Fetures mà OpenAM cung cấp

**Authentication:**Hỗ trợ hơn 25 out-of-box method authentication, OpenAM rất linh hoạt khi chain (móc nối) các method lại với nhau cùng với Adaptive scoring hoặc tự tinh chỉnh những module authentication dựa trên JAAS (Java Authentication and Authorization Service). Giúp cho người dùng có thể tinh chỉnh một các linh động cách thức authentication mà phù hợp với nguyện vọng của họ.

Adaptive Risk Authentication: Là một module được sử dụng để xác định risks trong quá trình authentication, để phảt hiện khi nào user cần phải hoàn thành một bước nào đó để hoàn tất việc login. Việc phát hiện dựa trên risk scoring, thông tin thêm từ user được yêu cầu khi họ login. Ví dụ, risk score có thể được tính toán dựa trên IP address range, truy cập từ một device mới, account idle time,… và được tích hợp vào authentication chain.

Authorization: OpenAM cung cấp chính sách authorization(authorization policy) từ cơ bản, đơn giản cho tới phức tạp, powerful finegrained. Vì quá trình authorization là tách biệt với applications và được centralizing trên OpenAM (việc thiết lập + dữ liệu các kiểu liên quan đến authorization đều là trên OpenAM hết) thì developer có thể thao tác rất nhanh chóng để tinh chỉnh policy theo nhu cầu mà không cần phải chỉnh sửa gì bên application. Thao tác tinh chỉnh authentication policy trên GUI rất là dễ dàng với giao diện point-and-click, drag-and-drop. Ngoài ra cũng có thể sử dụng REST API của OpenAM để tinh chỉnh authentication policy nữa.

Federation: dùng để share thông tin identity giữa các hệ thống hoặc các domain boundaries sử dụng chuẩn identity protocol ( như là SAML, OAuth2, OpenID Connect). Nó cho phép user access services mà được liên kết qua cloud và các mobile devices, ko cần thiết phải có nhiều password nhiều user profiles nữa.

Single Sign-On (SSO): OpenAM cung cấp nhiều kỹ thuật cho SSO, kể cả hỗ trợ SSO qua cross-domain trong 1 tổ chức, SSO giữa nhiều tổ chức bằng cách kết hợp với Federation. OpenAM support nhiều option cho việc thực thi policy và bảo vệ resource, bao gồm policy agent thiết lập trên web or application server. OpenAM còn có thể hoạt động như là multi-protocol hub, chuyển đổi sang một bên providers mà được tin tưởng. OpenAM cung cấp một vài option mềm dẻo cho SSO.

User Self-Service and Social Sign-On: OpenAM là một giải pháp hoàn mĩ cho customer-facing identity trong khi nó là cốt lõi của một phương pháp tích hợp siêu tiện (nhanh gọn nhẹ) khi ta làm việc với hàng triệu người dùng, tất cả đều đảm bảo bởi level sercurity cao nhất có thể.

Việc tích hợp chức năng self-registration hoặc password reset cho self-service được hỗ trợ và config rất đơn giản. OpenAM còn hỗ trợ tích hợp chức năng social sign-on (Facebook, Google, LinkedIn,...)

Developer Friendliness and Open Standards: Download đơn giản cộng với việc cung cấp bản nightly build (build hàng ngày để cập nhật mới nhất) khiến cho OpenAM rất dễ để install. OpenAM cung cấp client application programing interface với Java và C API + RESTful API trả về JSON or XML thông qua HTPP, cho phép user access authentication, authorization và identity service từ web application sẻ dụng REST client. OAuth2 cũng cung cấp REST interface cho modern, lightweight federation và authorization protocol. Những tính năng như là user self-service, policy và security token servicecũng đồng thời được hỗ trợ qua REST API, khiến cho developer dễ dàng để tích hợp những tính năng mạnh mẽ vào.

High Availability and Scalability: để đảm bảo high availability OpenAM cung cấp cả system failover và session failover, đảm bảo cho ko có bất kì một single point of failure nào tồn tai trong deployment, và khiến cho OpenAM service luôn available với end-user.Việc có những OpenAM servers, policy agents dư ra + load balancer sẽ chống lại single point of failure. Còn session failover đảm bảo user’s session được lưu trữ trọn vẹn ko một dữ liệu nào của user bị mất cả.

III. OpenAM có lợi gì cho doanh nghiệp

Chi phí và thời gian phát triển: Khi doanh nghiệp triển khai một service thì để phát triển phần authentication và authorization khá là đơn giản với sự hỗ trợ của hầu hết tất cả các framework làm web. Tuy nhiên khi doanh nghiệp mở rộng quy mô, họ phát triển thêm nhiều service nữa mà đến lúc đó họ muốn tất cả các service của họ đều chung một hệ thống quản lý người dùng để người dùng chỉ cần đăng ký một lần là có thể sử dụng được tất cả các dịch vụ của doanh nghiệp. Lúc này bài toán đã trở nên khó khăn và gian nan hơn rất nhiều lần, để phát triển được một hệt thống quản lý người dùng như vậy cần rất nhiều thời gian và công sức chưa nói đến trong quá trình sử dụng sẽ tốn công sức thêm để maintain nữa. Khi sử dụng OpenAM thì việc cài đặt cũng như thiết lập khá là đơn giản + sự đảm bảo trong access managerment sẽ giúp cho doanh nghiệp tiết kiệm được rất nhiều chi phí + thời gian.

Tuỳ biến linh hoạt: OpenAM được thiết kế dựa theo Modular Architecture nên độ tuỳ biến trong quá trình sử dụng của OpenAM rất cao. Trên ta đã nhắc tới OpenAM là all-in-one access managerment tool nên OpenAM đã cung cấp các giải pháp giải quyết hầu hết các bài toán về access managerment thực tế.

Hỗ trợ triển khai cloud: Đương nhiên OpenAM hỗ trợ triển khai trên cloud.

High availability và scalability: Như đã nhắc ở trên, OpenAM hỗ trợ cả system failover và session failover để đảm bảo không có single point failure và đảm bảo user session data luôn được bảo toàn trọn vẹn. OpenAM đáp ứng được xử lý trên hệ thống với hàng triệu user nên rất phù hợp với các doanh nghiệp.

Ổn định: việc tích hợp với OpenAM là độc lập với application nên khi thay đổi application hay phía OpenAM sẽ không gây ra ảnh hưởng tới hoạt động của bên kia, giúp cho toàn bộ hệ thống tăng tính ổn định.

IV. Giải thích đôi chút về SSO

Single Sign On: đăng nhập một lần -> như đã giải thích qua ở trên thì user chỉ cần đăng nhập một lần là có thể truy cập vào tất cả những resouce cần đăng nhập của các service trong hệ thống.

SSO

Như trong hình vẽ trên, nếu không có SSO thì user sẽ phải tạo trên mỗi 1 service một account và mỗi lần truy cập tới tài nguyên cần xác thực thì lại phải cần một lần login trên mỗi 1 service đó nữa. Nhưng sau khi đã triển khai SSO thì user chỉ cần đăng ký account một lần cũng như login một lần duy nhất là có thể truy cập tới tất cả các service của hệ thống.

Vậy OpenAM đã xử lý SSO như thế nào. Cùng xem hình sau:

SSO

Khi user truy cập vào phần tài nguyên cần xác thực trên service 01 thì ngay lập tức Policy Agent sẽ kiểm tra xem user này đã authentication chưa, nếu chưa nó sẽ redirect tới màn hình login của OpenAM. User sau khi login sẽ tạo ra một session ( được lưu trên cả browser và server OpenAM đối với stateful session, chỉ lưu trên browser với stateless session) Policy Agent sẽ sử dụng session này của user để Authentication cũng như Authorization.

Vì vậy khi truy cập vào phần tài nguyên của service 02, user đã có sẵn session được tạo ra và lưu trên cookie của OpenAM domain lẫn server của OpenAM ( stateful session) nên user đã được authentication mà không cần phải login thêm lần nào nữa.

  • Quá trình thực thi SSO diễn ra ở Policy Agent tách biệt với ứng dụng cũng như không ảnh hưởng đến enduser nên việc tích hợp OpenAM khá dễ dàng và đem lại trải nghiệm tốt.
  • OpenAM hỗ trợ 2 loại SSO là - Single domain SSO: domain của các service và OpenAM server là subdomain của một domain cha nào đó.
  • Cross-domain SSO: domain của các service và OpenAM server có thể khác nhau -> cần phải thiết lập stateful session mới chạy được.

V. Cài đặt

Để thiết lập môi trường thử nghiệm OpenAM là rất đơn giản ta chỉ cần cài đặt Tomcat và deploy file war là được - hướng dẫn xem tại đây

Các bước cài đặt cụ thể sẽ là ( trên Centos)

  • Cài đặt java
cd /opt/
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.rpm"
sudo yum localinstall jre-8u60-linux-x64.rpm
sudo yum localinstall jdk-8u60-linux-x64.rpm

#define JAVA_HOME val
vi ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.8.0_60
source ~/.bashrc
  • Cài đặt tomcat
cd /opt/
wget http://mirrors.viethosting.vn/apache/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz
tar xzf apache-tomcat-7.0.68.tar.gz
mv apache-tomcat-7.0.68 tomcat
chmod +x tomcat/bin/*.sh

touch /opt/tomcat/bin/setenv.sh
###############################
#! /bin/sh

export JAVA_HOME="/usr/java/jdk1.8.0_60"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m -XX:MaxPermSize=256m"
###############################

/opt/tomcat/bin/startup.sh
  • Deploy OpenAM: Login và download file war tại đây
# rename file war to openam.war
cp openam.war /opt/tomcat/webapps/
  • Start Tomcat
/opt/tomcat/bin/startup.sh

Và khi truy cập vào http://xxx:8080/openam ta sẽ thấy giao diện OpenAM.

OpenAM Homepage

VI. Kết luận

Điểm tốt

  • Dễ dàng cài đặt và tích hợp: việc tích hợp OpenAM vào hệ thống khá dễ dàng, với thiết lập khá cơ bản là ta có tích hợp vào sản phẩm thực tế được rồi.
  • Tiết kiệm chi phí + thời gian để triển khai.
  • Là giải pháp access managerment tốt nhất hiện tại.
  • Không quá khó để tiếp cận: với người

Điểm chưa tốt

  • Tài liệu dù nhiều nhưng vẫn chưa đầy đủ để người dùng có thể tinh chỉnh những thiết lập cao siêu hơn, xâu xa hơn.
  • Bản free vẫn còn nhiều lỗi chưa được khắc phục: trong quá trình sử dụng nhận thấy qua nhiều phiên bản OpenAM vẫn còn những lỗi chưa được khắc phục như là Client Detection, lỗi config login URL cho Policy Agent,..
  • Có một chút bất ổn định: trong quá trình sử dụng thấy OpenAM sau một loạt các config thì một số thiết lập không có tác dụng

Tham khảo