Xác thực và ủy quyền sử dụng với Auth0 trong PHP

Related Articles

Trong bài viết này, tất cả chúng ta sẽ mày mò Auth0, là một dịch vụ phân phối xác nhận và chuyển nhượng ủy quyền. Auth0 cho phép bạn thiết lập những tính năng xác nhận 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 nhận giúp việc tiến hành những tính năng tương quan đến xác nhận trong website của bạn trở nên thuận tiện. Nếu bạn đã thiết kế xây dựng một ứng dụng và bạn chỉ muốn thuê ngoài những tính năng xác nhận và ủy quyền, vậy bạn nên xem xét sử dụng một dịch vụ như Auth0 .

Hãy để tôi nhanh gọn tóm tắt Auth0 phân phối 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 và điều tra cách thiết lập tính năng xác nhận cơ bản trong ứng dụng web PHP từ phía sever. Trong phần còn lại, tôi sẽ lý giải cách làm thế nào để bạn hoàn toàn có thể bảo mật thông tin những 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ẽ ra mắt cho những bạn cách nhanh gọn thiết lập xác nhận cơ bản cho những ứng dụng web từ phía sever bằng cách sử dụng Auth0. Trong thực tiễn, đội ngũ Auth0 đã tương hỗ một sample trên GitHub để minh hoạ những ví dụ cơ bản, vậy chúng tôi sẽ sử dụng chúng thay vì phải tự tạo những 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 Bất Động Sản mẫu .

Tiếp tục chạy lệnh composer install để cài đặt các dependencies (gói phụ thuộc).

Theo file composer.json, cần cài đặt các gói vlucas/phpdotenvauth0/auth0-php.

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.

File này chứa những giá trị thông số kỹ thuật sẽ được thư viện Auth0 sử dụng .

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 để triển khai hầu hết logic xác nhận .

  • 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 Bất Động Sản .

Login Script

Chúng ta sẽ khởi đầu với file login.php .

Lúc đầu, chúng tôi đã bao gồm các autoloaders; các file này đảm nhiệm việc tải Auth0 và các class có liên quan đến các biến môi trường. Tiếp theo, chúng ta khởi tạo các biến định cấu hình từ file .env thông qua hàm getenv.

Tiếp theo, chúng tôi khởi tạo đối tượng người tiêu dùng Auth0 và gọi phương pháp đăng nhập để chuyển hướng người dùng đến Auth0 cho việc đăng nhập. Khi đăng nhập, người dùng sẽ được chuyển hướng trở lại website của chúng tôi .

Bạn có thể đăng nhập bằng tài khoản xã hội như Facebook, Google và các tài khoản tương tự hoặc tạo tài khoản mới trong khi đăng nhập. Trong cả hai trường hợp, Auth0 sẽ tạo các bản ghi cho người dùng mới ở trên thiết bị của họ. Bạn có thể bật các đăng nhập qua xã hội khác nhau trong phần Connections > Social trên trang dashboard của Auth0. Ngoài ra, bạn có thể kiểm tra danh sách người dùng đã đăng nhập bằng cách sử dụng Auth0 trên trang dashboard của Auth0 bên dưới liên kết Users.

The Logout Script

Tiếp theo, chúng ta hãy xem nhanh file logout.php.

File này hoạt động khá giống với file login.php, ngoại trừ việc nó sẽ được gọi khi người dùng đăng xuất. Phương thức logout được gọi để vô hiệu một phiên người dùng trong ứng dụng của bạn. Sau đó, người dùng sẽ được chuyển hướng đến Auth0 vì thế dịch vụ được thông báo về hoạt động đăng xuất của người dùng. Cuối cùng, người dùng sẽ được chuyển hướng trở lại ứng dụng của bạn.

The Index File

Cuối cùng, chúng ta hãy xem qua file index.php, đây là entry point (điểm bắt đầu) của ứng dụng.

Ở đâ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 tiến hành luồng xác nhận cơ bản cho ứng dụng từ sever .

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 thế nào bạn hoàn toàn có thể bảo mật thông tin những API tùy chỉnh của mình bằng cách tiến hành luồng cấp phép code OAuth2. Tôi kỳ vọng bạn đã quen thuộc với tiến trình cấp phép chuẩn của mã ủy quyền vì chúng tôi sẽ bàn vào cụ thể về việc đó. Hãy xem 1 số ít 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à khám phá 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úng ta hãy xem code này hoạt động giải trí như thế nào !

Bắt đầu luồng uỷ quyền (Authorization Flow)

Đầu tiên, chúng tôi đã chuẩn bị sẵn sàng một link gửi người dùng đến sever Auth0 để khởi đầu luồng chuyển nhượng ủy quyền .

Hãy thay thế {AUDIENCE}, {CLIENT_ID}{CALLBACK_URL} bằng các giá trị tương ứng với ứng dụng của bạn. Thông số {AUDIENCE} phải được thay thế bằng giá trị của Identifier – được lưu ở trong API > {YOUR API APPLICATION} > Settings trên trang dashboard của Auth0.

{SOME_RANDOM_STRING} nên được thay thế bằng một giá trị duy nhất và phải khó đoán. Chuỗi này được sử dụng để ngăn chặn các cuộc tấn công CSRF. Ngoài ra, hãy đảm bảo việc thay thế {AUTH0_DOMAIN} bằng tên miền của bạn, như đã thảo luận trước đó.

Nhận Access Token (mã truy cập)

Khi người dùng nhấp vào liên kết Sign In, họ sẽ được đưa đến máy chủ Auth0 để xác thực. Sau khi xác thực, họ sẽ được yêu cầu cho phép ứng dụng truy cập vào trang hồ sơ của bạn. Sau khi ủy quyền, người dùng sẽ được chuyển hướng trở lại ứng dụng của bạn với code dưới dạng tham số $_GET.

Tiếp theo, chúng ta có thể trao đổi code này để lấy acess token.

Như bạn hoàn toàn có thể thấy, cần phải call CURL để lấy access token .

Gọi API Endpoint tuỳ biến của bạn

Khi bạn có access token, bạn hoàn toàn có thể gọi API endpoint tùy biến của mình bằng cách gồm có nó vào header .

Một API Endpoint được Auth0 bảo vệ

File API tài nguyên ảo demo_api_server.php có thể trông như sau:

Hãy nhanh gọn xem kỹ những phần quan trọng của code này .

Xác thực Access Token

Bạn có trách nhiệm xác thực access token trước khi cấp quyền truy cập vào tài nguyên đang được bảo vệ. Đó chính xác là những gì chúng tôi đã làm trong đoạn đoạn code sau. Chúng tôi đã sử dụng class tiện ích JWTVerifier để xác thực access token.

{SIGNING_ALGORITHM} nên được thay thế bằng giá trị của Signing Algorithm được tìm thấy ở APIs > {YOUR API APPLICATION} > Settings.

Vậy đó là cách bạn có thể bảo vệ các API tùy chỉnh của mình nếu muốn sử dụng luồng OAuth2 của dịch vụ Auth0.

Tổng kết

Hôm nay, chúng tôi xem xét qua dịch vụ Auth0, nó phân phối xác nhận và chuyển nhượng ủy quyền làm dịch vụ. Sau khi trình làng dịch vụ Auth0, chúng tôi đi vào một vài ví dụ thực tiễn để trình diễn cách làm thế nào bạn hoàn toàn có thể tích hợp Auth0 với ứng dụng PHP của bạn .

Vui lòng gửi yêu cầu và câu hỏi của bạn trải qua feed bên dưới đây !

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories