Giới thiệu gem CASino
CASino là một ứng dụng Single sign-on server, hỗ trợ CAS protocol và có thể kết hợp với gần như toàn bộ ngôn ngữ lập trình web hiện nay. CAS là hệ thống xác thực đầu tiên được xây dựng bởi trường đại học Yale nhằm mục đích cung cấp một con đường đáng tin cậy để xác thực một người dùng. CAS ...
CASino là một ứng dụng Single sign-on server, hỗ trợ CAS protocol và có thể kết hợp với gần như toàn bộ ngôn ngữ lập trình web hiện nay.
CAS là hệ thống xác thực đầu tiên được xây dựng bởi trường đại học Yale nhằm mục đích cung cấp một con đường đáng tin cậy để xác thực một người dùng. CAS cung cấp cho mọi ứng dụng của bạn quyền cho người dùng đăng nhập single sign-on server.
Cài đặt qua CASinoApp
Sử dụng CASinoApp là cách đơn giản nhất và được khuyên dùng để cài đặt và sử dụng CAS server.
- Cài đặt trực tiếp
cd CASinoApp gem install bundler ./script/install sqlite # choose either sqlite (not recommended), postgres or mysql
- Sử dụng Multi-staging Environment
cd CASinoApp gem install bundler bundle install
Cài đặt từ ứng dụng Ruby on Rails
- Tạo một ứng dụng Ruby on Rails
rails new my-casino --skip-test-unit --skip-bundle cd my-casino
- Include và cài đặt CASino gem
gem 'sqlite3' # for sqlite support gem 'mysql2' # for mysql support gem 'pg' # for postgresql support gem 'casino'
- Generate CASino configuration files
bundle exec rails g casino:install
CASino cho phép thay đổi hành vi của nó thông qua các parameters, được lưu trữ ở trong các file YAML. Các level đầu tiên của parameters luôn là environments, như development, staging hay production. CASino cho phép bạn config tất cả environments trong cùng một file.
Database
CASino cần một database để lưu trữ session data, user settings và các CAS data có liên quan khác. Giống như ứng dụng Ruby on Rails, cấu hình của database được đặt trong file config/database.yml.
Nếu bạn thay đổi cài đặt của database, hãy load một empty database schema:
bundle exec rake db:migrate SCOPE=casino
CAS
Cấu hình CAS được lưu trữ ở config/cas.yml. Đây là nơi cấu hình cách SSO xử lí các đăng nhập.
- LDAP
Ví dụ về cấu hình một authentication dựa trên LDAP directory service:
authenticators: my_company_ldap: authenticator: "LDAP" options: host: "localhost" port: 636 base: "ou=People,dc=example,dc=com" username_attribute: "uid" encryption: "simple_tls" admin_user: "cn=admin,dc=example,dc=com" admin_password: "password" extra_attributes: email: "mail" fullname: "displayname"
Ở ví dụ trên, extra_attributes cho phép gửi thêm dữ liệu tới services sử dụng SSO. Services sẽ nhận một trường tên là email, tương ứng với mail trong LDAP và fullname, tương ứng với displayname được lưu trong LDAP.
- Database
Ví dụ về cấu hình authentication dựa trên một bảng MySQL:
authenticators: my_user_database: authenticator: "ActiveRecord" options: connection: adapter: "mysql2" host: "localhost" username: "casino" password: "secret" database: "users" table: "users" username_column: "username" password_column: "password" extra_attributes: email: "email_database_column" fullname: "displayname_database_column"
Trong ví dụ trên, CASino sẽ tìm kiếm users trong bảng users. Cột username chứa chứa các usernames và password chứa passwords tương ứng.
- Parameters
Dưới đây là paramters mặc định, có thể được viết đè lên trong config/cas.yml
frontend: sso_name: 'CASinoApp' footer_text: 'Powered by <a href="http://casino.rbcas.com/">CASino</a>' login_ticket: lifetime: 600 ticket_granting_ticket: lifetime: 86400 lifetime_long_term: 864000 service_ticket: lifetime_unconsumed: 300 lifetime_consumed: 86400 single_sign_out_notification: timeout: 10 proxy_ticket: lifetime_unconsumed: 300 lifetime_consumed: 86400 two_factor_authenticator: lifetime_inactive: 300 drift: 30
Limit allowed services
# if you are in production, execute the following command first: #export RAILS_ENV=production bundle exec rake casino:service_rule:flush # Delete all service rules. bundle exec rake casino:service_rule:list # List all service rules. bundle exec rake casino:service_rule:delete[$ID] # Remove a service rule. bundle exec rake casino:service_rule:add[$NAME,$URL] # Add a service rule (prefix the url parameter with "regex:" to add a regular expression) # Allow all HTTPS services: bundle exec rake casino:service_rule:add["HTTPS","regex:^https:"] # Allow a domain: bundle exec rake casino:service_rule:add["example.org","regex:^https?://example.org/"] # Allow exactly one page: bundle exec rake casino:service_rule:add["example.com","https://example.com/"]
Hy vọng qua bài viết này, mọi người có thể phần nào nắm được về gem CASino của Rails - một giải pháp cho Single sign-on.
Bài viết được dịch từ CASino Documentation