Hướng dẫn oauth implementation in php

Vietnamese [Tiếng Việt] translation by Andrea Ho [you can also view the original English article]

Nội dung chính

  • Auth0 là gì?
  • Tích hợp xác thực phía máy chủ
  • Thiết lập dự án
  • Những file chủ yếu của dự án
  • Bảo mật cho API tùy biến của bạn cùng OAuth2
  • Bắt đầu luồng uỷ quyền [Authorization Flow]
  • Nhận Access Token [mã truy cập]
  • Gọi API Endpoint tuỳ biến của bạn
  • Một API Endpoint được Auth0 bảo vệ
  • Xác thực Access Token
  • Tổng kết

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 composer.json. 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 composer install để 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 vlucas/phpdotenvauth0/auth0-php.

{
    "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 vlucas/phpdotenv 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.

Mặt khác, gói auth0/auth0-php 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.

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ế.

AUTH0_CALLBACK_URL 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 Allowed Callback URLs 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.
  • 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 AUTH0_CALLBACK_URL.
  • 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 In

Logout

Ở đây, chúng tôi đã sử dụng phương thức getUser của đối tượng $auth0 để 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.

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.


    

Chủ Đề