Vietnamese [Tiếng Việt] translation by Andrea Ho [you can also view the original English article] Andrea Ho [you can also view the original English article]
Trong bài viết này, chúng ta sẽ khám phá Auth0, là một dịch vụ cung cấp xác thực và ủy quyền. Auth0 cho phép bạn thiết lập các tính năng xác thực và ủy quyền cơ bản cho ứng dụng của bạn trong nháy mắt.
Auth0 là gì?
Auth0 là một công cụ dịch vụ xác thực giúp việc triển khai các tính năng liên quan đến xác thực trong website của bạn trở nên dễ dàng. Nếu bạn đã xây dựng một ứng dụng và bạn chỉ muốn thuê ngoài các tính năng xác thực và ủy quyền , vậy bạn nên cân nhắc sử dụng một dịch vụ như Auth0.
Hãy để tôi nhanh chóng tóm tắt Auth0 cung cấp những tính năng gì:
- xác thực một lần [single sign-on]
- xác thực 2 yếu tố [multifactor authentication]
- Đăng nhập không cần mật khẩu
- quản lý người dùng
- và nhiều nữa
Trong bài viết này, chúng tôi sẽ giới thiệu một số phương pháp đăng nhập một lần [sso] mà bạn có thể triển khai trong các ứng dụng web của mình để tận dụng các tính năng xác thực do dịch vụ Auth0 cung cấp.
Trong phần đầu của bài viết, chúng tôi sẽ nghiên cứu cách thiết lập chức năng xác thực cơ bản trong ứng dụng web PHP từ phía máy chủ. Trong phần còn lại, tôi sẽ giải thích cách làm thế nào để bạn có thể bảo mật các API tùy biến của mình bằng cách thiết lập ủy quyền OAuth bằng dịch vụ Auth0.
Tích hợp xác thực phía máy chủ
Trong phần này, chúng tôi sẽ giới thiệu cho các bạn cách nhanh chóng thiết lập xác thực cơ bản cho các ứng dụng web từ phía máy chủ bằng cách sử dụng Auth0. Trong thực tế, đội ngũ Auth0 đã hỗ trợ một sample trên GitHub để minh hoạ các ví dụ cơ bản, vậy chúng tôi sẽ sử dụng chúng thay vì phải tự tạo các ví dụ mới.
Trước khi tiếp tục, hãy bảo đảm Composer đã được thiết lập để cài đặt các SDK Auth0 bằng cách sử dụng file
cd 00-Starter-Seed composer install4. Ngoài ra, nếu bạn muốn bắt kịp các ví dụ trong bài viết này, hãy tạo cho mình một tài khoản miễn phí với Auth0.
Thiết lập dự án
Hãy clone những ví dụ của dự án mẫu.
git clone //github.com/auth0-samples/auth0-php-web-app.git .
Tiếp tục chạy lệnh
cd 00-Starter-Seed composer install5 để cài đặt các dependencies [gói phụ thuộc].
cd 00-Starter-Seed composer install
Theo file composer.json, cần cài đặt các gói
cd 00-Starter-Seed composer install6 và
cd 00-Starter-Seed composer install7.composer.json, cần cài đặt các gói
cd 00-Starter-Seed composer install6 và
cd 00-Starter-Seed composer install7.
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }
Thư viện
cd 00-Starter-Seed composer install6 dùng để khởi tạo các biến môi trường từ file .env. Do đó, nó cho phép bạn tách việc cấu hình khỏi code, vì code thay đổi giữa các môi trường..env. Do đó, nó cho phép bạn tách việc cấu hình khỏi code, vì code thay đổi giữa các môi trường.
Mặt khác, gói
cd 00-Starter-Seed composer install7 sẽ giúp chúng tôi thiết lập ủy quyền trong ứng dụng của mình.
Tiếp theo, hãy thiết lập cấu hình cho ứng dụng của chúng ta trong file .env. Tiếp tục tạo file .env bằng cách copy nó từ file .env.example..env. Tiếp tục tạo file .env bằng cách copy nó từ file .env.example.
cp .env.example .env
File này chứa các giá trị cấu hình sẽ được thư viện Auth0 sử dụng.
AUTH0_CLIENT_ID={CLIENT_ID} AUTH0_DOMAIN={DOMAIN_NAME} AUTH0_CLIENT_SECRET={CLIENT_SECRET} AUTH0_CALLBACK_URL={CALLBACK_URL} AUTH0_AUDIENCE=
Bạn sẽ có thể tìm thấy hầu hết các thiết lập trong Applications > Default App > Settings trên trang dashboard của của Auth0. Chú ý rằng tôi đang sử dụng ứng dụng mặc định hệ thống tạo ra. Tất nhiên, bạn có thể tiếp tục và tạo một ứng dụng mới nếu bạn muốn thế.Applications > Default App > Settings trên trang dashboard của của Auth0. Chú ý rằng tôi đang sử dụng ứng dụng mặc định hệ thống tạo ra. Tất nhiên, bạn có thể tiếp tục và tạo một ứng dụng mới nếu bạn muốn thế.
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }0 là URL của ứng dụng của bạn, là nơi mà Auth0 sẽ chuyển hướng người dùng đến sau khi đăng nhập và đăng xuất. Giá trị bạn đặt trong trường này phải được định cấu hình trong
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }1 trong cấu hình của ứng dụng trên trang dashboard của Auth0.
Bạn sẽ tìm thấy 3 file chủ chốt để thực hiện hầu hết logic xác thực.
- index.php: Đây là trang chính hiển thị nút đăng nhập hoặc đăng xuất dựa trên trạng thái của người dùng.: Đây là trang chính hiển thị nút đăng nhập hoặc đăng xuất dựa trên trạng thái của người dùng.
- login.php: đoạn mã này sẽ được khởi tạo khi bạn click vào nút đăng nhập, và nó sẽ chuyển hướng người dùng đến giao diện đăng nhập của Auth0. Sau khi đăng nhập, họ sẽ được chuyển hướng trở lại
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }
0.: đoạn mã này sẽ được khởi tạo khi bạn click vào nút đăng nhập, và nó sẽ chuyển hướng người dùng đến giao diện đăng nhập của Auth0. Sau khi đăng nhập, họ sẽ được chuyển hướng trở lại{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }
0. - logout.php: file lệnh này sẽ được khởi tạo khi bạn nhấp vào nút đăng xuất và nó sẽ chuyển hướng người dùng đến Auth0 ở chế độ chạy nền, cho người dùng đăng xuất và đưa họ về AUTH0_CALLBACK_URL.
Những file chủ yếu của dự án
Hãy điểm qua từng file lúc ban động của dự án.
Login Script
Chúng ta sẽ bắt đầu với file login.php.
Sign InLogout
Ở đây, chúng tôi đã sử dụng phương thức
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }5 của đối tượng
{ "name": "auth0/basic-webapp-sample", "description": "Basic sample for securing a WebApp with Auth0", "require": { "vlucas/phpdotenv": "2.4.0", "auth0/auth0-php": "~5.0" }, "license": "MIT", "authors": [ { "name": "Martin Gontovnikas", "email": "" }, { "name": "Germán Lena", "email": "" } ] }6 để xem liệu có phiên nào đang hoạt động. Nếu không có, chúng tôi sẽ hiển thị liên kết Sign In, đưa người dùng đến login.php và bắt đầu khởi tạo luồng đăng nhập. Mặt khác, chúng tôi sẽ chào đón người dùng và hiển thị liên kết Logout nếu người dùng đã đăng nhập.Sign In, đưa người dùng đến login.php và bắt đầu khởi tạo luồng đăng nhập. Mặt khác, chúng tôi sẽ chào đón người dùng và hiển thị liên kết Logout nếu người dùng đã đăng nhập.
Vậy đấy là phần triển khai luồng xác thực cơ bản cho ứng dụng từ máy chủ.
Bảo mật cho API tùy biến của bạn cùng OAuth2
Trong phần này, chúng tôi sẽ xem làm sao bạn có thể bảo mật các API tùy chỉnh của mình bằng cách triển khai luồng cấp phép code OAuth2. Tôi hy vọng bạn đã quen thuộc với quy trình cấp phép chuẩn của mã ủy quyền vì chúng tôi sẽ bàn vào chi tiết về việc đó. Hãy xem một số bài viết khác của chúng tôi ở đây trên Envato Tuts+ nếu bạn muốn tìm hiểu về OAuth2.
Thay vào đó, chúng tôi sẽ lập tức đào sâu vào việc triển khai thực tế. Hãy tiếp tục tạo file auth_code_grant_example.php với các nội dung như sau.auth_code_grant_example.php với các nội dung như sau.