Ví dụ xác thực PHP
Bạn đã bao giờ thấy mình đang xây dựng một ứng dụng và cần thêm xác thực, sợ hãi khi nghĩ đến việc thiết lập một cơ sở dữ liệu tên người dùng và mật khẩu khác chưa? . Bằng cách tận dụng API OAuth đơn giản của Okta, chúng tôi có thể vượt qua hầu hết các thách thức liên quan đến việc xác thực người dùng bằng cách để Okta xử lý các phần khó Show Để làm theo hướng dẫn này, trước tiên bạn cần có tài khoản Nhà phát triển Okta. Nếu bạn chưa có tài khoản, hãy đăng ký miễn phí và quay lại đây khi bạn hoàn tất. Chúng tôi sẽ không sử dụng bất kỳ thư viện hoặc phụ thuộc PHP bên ngoài nào trong ví dụ này chỉ để giữ cho mọi thứ đơn giản Chúng tôi sẽ bắt đầu với một tệp PHP duy nhất để minh họa trạng thái đăng nhập/đăng xuất của ứng dụng của chúng tôi. Sau đó, chúng tôi sẽ tích hợp API Okta để xác thực người dùng và tìm tên người dùng của họ sau khi họ đăng nhập. Bạn có thể sử dụng hướng dẫn này làm cơ sở để thêm xác thực vào ứng dụng thực của riêng mình Thiết lập ứng dụng PHP mẫuNếu bạn muốn chuyển sang dự án đã hoàn thành, hãy xem mã nguồn trên GitHub. Bài đăng này xây dựng mã trong dự án đã hoàn thành và giải thích từng bước Tạo một tệp mới, 0, với các nội dung sau. Điều này sẽ thiết lập hai “chế độ xem” khác nhau cho ứng dụng của chúng ta dựa trên việc người dùng có đăng nhập hay không (có tên người dùng trong phiên PHP hay không)
Với bộ khung đơn giản đã được tạo, chúng tôi có một nơi để bắt đầu làm việc thêm xác thực. Ứng dụng này hiện tìm kiếm "tên người dùng" trong biến phiên và coi người dùng đã đăng nhập khi được đặt Tiếp theo, hãy thêm một hàm đơn giản mà chúng ta sẽ sử dụng khi thực hiện lệnh gọi API tới Okta. Hàm này sẽ thực hiện một yêu cầu HTTP và trả về phản hồi được giải mã JSON. Nó nhận một URL và một mảng tham số tùy chọn. Nếu có tham số, nó sẽ thực hiện yêu cầu POST với tham số là phần thân HTTP. Mặt khác, nó tạo một yêu cầu GET tới URL đã cho. Vì tất cả các lệnh gọi API mà chúng tôi đang thực hiện sẽ dẫn đến nội dung phản hồi JSON, hàm này giải mã phản hồi JSON và trả về đối tượng kết quả
Tạo một ứng dụng OAuth trong OktaTrước khi chúng tôi có thể tiến xa hơn, chúng tôi cần định cấu hình tài khoản Nhà phát triển Okta của mình để nhận ID khách hàng và bí mật sử dụng để nói chuyện với API. Trong phần Ứng dụng của tài khoản Nhà phát triển Okta của bạn, nhấp vào Thêm ứng dụng và chọn Web. Thay đổi duy nhất mà chúng tôi cần thực hiện đối với cài đặt ứng dụng mặc định là thay đổi URL gọi lại thành 1, vì chúng tôi đang viết toàn bộ quy trình trong một tệp PHP nàyNhấp vào Xong và bạn sẽ được đưa đến màn hình tiếp theo nơi bạn có thể nhận ID khách hàng mới và bí mật của mình. Sao chép hai giá trị đó vào các biến bên dưới và thêm đoạn này vào đầu tệp PHP của bạn, ngay sau 2
Chúng tôi cũng cần tìm URL siêu dữ liệu của máy chủ ủy quyền. Từ menu trên cùng, chọn API -> Máy chủ ủy quyền. Bạn sẽ thấy một máy chủ ủy quyền trong danh sách, 3. Nhấp vào đó và sao chép URI siêu dữ liệu bên dưới máy khách và chuyển hướng các dòng
Xây dựng URL đăng nhậpBây giờ chúng tôi đã sẵn sàng để bắt đầu xây dựng URL đăng nhập nơi chúng tôi có thể gửi cho người dùng để xác thực. Thay dòng 4 bằng đoạn mã sau
Đoạn mã này thiết lập phần đầu của luồng Mã ủy quyền OAuth. Nếu bạn muốn biết thêm chi tiết về các tham số này, tôi đã viết về luồng Mã ủy quyền trước đây trên blog này. OAuth 2 là gì. 0 Loại cấp mã ủy quyền? Hiện tại chúng tôi đã xây dựng đủ để dùng thử. Từ dòng lệnh, điều hướng đến thư mục chứa tệp 0 của bạn và khởi động máy chủ PHP 1Bây giờ bạn có thể truy cập trang này trong trình duyệt http. //127. 0. 0. 1. 8080/ và bạn sẽ thấy lời nhắc đăng nhập của mình Đừng nhấp vào liên kết ngay, vì chúng tôi vẫn cần thiết lập xử lý lệnh gọi lại và nhận mã thông báo truy cập Xử lý chuyển hướng OAuthKhi người dùng nhấp vào URL đăng nhập, họ sẽ được gửi đến máy chủ ủy quyền Okta. Máy chủ ủy quyền sẽ yêu cầu họ đăng nhập (nếu họ chưa đăng nhập), sau đó sẽ tạo mã ủy quyền tạm thời và chuyển hướng người dùng quay lại ứng dụng này. Để xác minh rằng người dùng đã đăng nhập trên thực tế, ứng dụng cần kiểm tra xem mã ủy quyền tạm thời này có hợp lệ hay không bằng cách đổi nó lấy mã thông báo truy cập tại máy chủ ủy quyền của Okta Giữa các dòng cấu hình ID ứng dụng khách của bạn và phần hiển thị chế độ xem đăng xuất, chúng tôi sẽ thêm một phần mới xử lý việc trao đổi mã ủy quyền để lấy mã thông báo truy cập Hãy bắt đầu bằng cách thêm kiểm tra mã ủy quyền trong chuỗi truy vấn. Mã của bạn sẽ trông giống như thế này bây giờ 2Bên trong phần mới này, thay cho nhận xét “TODO” mà chúng ta vừa thêm vào, trước tiên hãy thêm một vài phần kiểm tra lỗi. Chúng tôi sẽ bắt đầu bằng cách kiểm tra xem máy chủ ủy quyền có trả về cùng một tham số trạng thái mà chúng tôi đã đặt khi người dùng bắt đầu đăng nhập không 3Cũng có thể máy chủ ủy quyền trả về lỗi ở đây, vì vậy chúng tôi sẽ hiển thị lỗi nếu điều đó xảy ra Tiếp theo, chúng tôi cần lấy mã ủy quyền từ URL và đổi nó lấy mã thông báo truy cập tại điểm cuối mã thông báo. Để thực hiện điều này, chúng tôi sử dụng điểm cuối mã thông báo từ phản hồi siêu dữ liệu và bao gồm ID ứng dụng khách và bí mật của chúng tôi trong lệnh gọi API 4Nếu mọi việc suôn sẻ, chúng ta sẽ có một mã thông báo truy cập trong đối tượng 6. Chúng tôi thực sự không cần mã thông báo truy cập cho bất cứ điều gì ngoại trừ việc tìm ra ai đã đăng nhập, vì vậy chúng tôi sẽ không lưu trữ nó ở bất cứ đâu. Thay vào đó, chúng tôi sẽ sử dụng nó để đưa ra yêu cầu đối với điểm cuối nội quan mã thông báo 6Mã này lấy mã thông báo truy cập và gửi nó, cùng với thông tin xác thực của khách hàng, đến điểm cuối xem xét nội quan mã thông báo. Điểm cuối nội quan cho chúng tôi biết tên người dùng của người đã đăng nhập. Nếu mã thông báo đang hoạt động, chúng tôi đặt tên người dùng trong phiên, sau đó chuyển hướng trở lại trang chủ. Bây giờ tên người dùng đang ở trong phiên, "ứng dụng" của chúng tôi coi người dùng đã đăng nhập và chúng tôi thấy trang đăng nhập có địa chỉ email của người dùng Hy vọng rằng đây là một minh họa hữu ích về việc thêm xác thực vào một ứng dụng PHP đơn giản dễ dàng như thế nào. Rõ ràng đây là một ví dụ tối giản và trong thực tế, ứng dụng của bạn có nhiều tính năng hơn và có thể được tổ chức tốt hơn thành nhiều tệp. Nhưng bạn sẽ có thể lấy những gì bạn đã học được ở đây và điều chỉnh nó cho phù hợp với các khuôn khổ hoặc trường hợp sử dụng khác mà bạn đang làm việc cùng Bạn có thể xem toàn bộ mã nguồn của ứng dụng này trên GitHub tại https. //github. com/aaronpk/quick-php-authentication Đọc thêmĐể biết thêm thông tin và hướng dẫn về OAuth, hãy xem một số bài đăng trên blog khác của chúng tôi
Như mọi khi, chúng tôi muốn nghe ý kiến từ bạn về bài đăng này hoặc bất kỳ điều gì khác. Đánh chúng tôi trong phần bình luận hoặc trên Twitter @oktadev Aaron PareckiAaron Parecki là Kiến trúc sư bảo mật cao cấp tại Okta. Ông là tác giả của OAuth 2. 0 Đơn giản hóa và duy trì oauth. bọc lưới. Anh ấy thường xuyên viết và nói chuyện về OAuth và bảo mật trực tuyến. Anh ấy là biên tập viên của một số thông số kỹ thuật internet và là người đồng sáng lập IndieWebCamp, một hội nghị tập trung vào quyền sở hữu dữ liệu và danh tính trực tuyến. Aaron đã phát biểu tại các hội nghị trên khắp thế giới về OAuth, quyền sở hữu dữ liệu, bản thân được định lượng và tự động hóa gia đình, đồng thời tác phẩm của anh ấy đã được giới thiệu trên Wired, Fast Company, v.v. Làm cách nào để xác thực trong PHP?Bước 1- Tạo biểu mẫu đăng nhập HTML PHP. Để tạo một biểu mẫu đăng nhập, hãy làm theo các bước được đề cập bên dưới. . Bước 2. Tạo mã CSS cho thiết kế trang web. . Bước 3. Tạo bảng cơ sở dữ liệu bằng MySQL. . Bước 4. Mở kết nối đến cơ sở dữ liệu MySQL. . Bước 5 - Tạo phiên đăng xuất. . Bước 6 - Tạo Mã cho Trang chủ Làm cách nào để xác thực bằng PHP và MySQL?Có một vài bước được đưa ra bên dưới để thiết lập môi trường. . Mở Bảng điều khiển XAMPP Khởi động máy chủ Apache bằng cách nhấp vào nút Bắt đầu Khởi động MySQL bằng cách nhấp vào nút Bắt đầu Tạo tất cả các tệp cần thiết để đăng nhập Tạo bảng đăng nhập vào cơ sở dữ liệu bằng phpMyAdmin trong XAMPP Làm cách nào để đăng nhập an toàn trong PHP?Bắt đầu. Có một số bước chúng tôi cần thực hiện trước khi tạo hệ thống đăng nhập an toàn của mình. . Tạo thiết kế biểu mẫu đăng nhập. . Tạo cơ sở dữ liệu và thiết lập bảng. . Xác thực người dùng bằng PHP. . Tạo Trang chủ. . Tạo trang hồ sơ. . Tạo tập lệnh đăng xuất Làm cách nào tôi có thể nhận được xác thực cơ bản trong PHP?$_SERVER["REMOTE_USER"] - CGI tiêu chuẩn . $_SERVER["PHP_AUTH_USER"] - APACHE . $_SERVER["AUTH_USER"] - IIS . |