Hướng dẫn php oauth2 rest api example - ví dụ về api php oauth2
API REST là một phần lớn của Internet ngày nay. Một số trường hợp sử dụng hàng ngày của API REST là: Show
Bảo mật API REST là rất cần thiết bởi vì API có thể phơi bày chức năng mạnh mẽ, quan trọng và hoàn toàn nguy hiểm trên Internet. Ví dụ: ứng dụng FinTech SaaS có thể cung cấp API cho phép bạn thao túng tài khoản ngân hàng của mình, thanh toán, chuyển tiền ra nước ngoài hoặc tải xuống thông tin nhạy cảm như báo cáo ngân hàng của bạn, địa chỉ cá nhân/tên/ssn. Hầu hết các khung ứng dụng web cung cấp các công cụ để xây dựng API REST an toàn nhanh chóng bằng cách sử dụng các giải pháp tiêu chuẩn công nghiệp như JSON Web Token (JWT) và OAuth 2.0. Tuy nhiên, nó trả tiền để hiểu những gì nằm dưới mui xe và cách xác thực và ủy quyền cho người dùng API của bạn một cách an toàn. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng một API đơn giản trong PHP từ đầu và tích hợp nó với OKTA để cung cấp xác thực người dùng. Okta là một dịch vụ API cho phép bạn tạo, chỉnh sửa và lưu trữ an toàn tài khoản người dùng và dữ liệu tài khoản người dùng và kết nối chúng với một hoặc nhiều ứng dụng. Hướng dẫn sẽ không dựa vào bất kỳ thư viện bên ngoài nào để thực hiện tích hợp OKTA hoặc làm việc với các mã thông báo truy cập JWT. Điều kiện tiên quyết duy nhất là PHP, nhà soạn nhạc và tài khoản nhà phát triển OKTA miễn phí. Tạo bộ xương API còn lạiBắt đầu bằng cách tạo một dự án trống với thư mục 1 và tệp 2 ở cấp cao nhất:Trong tệp 2, xác định một phụ thuộc (thư viện dotenv để bạn có thể giữ chi tiết xác thực OKTA trong tệp 4 mà Lừa bị Git bỏ qua). Ngoài sự phụ thuộc, xác định trình tải tự động PSR-4 để tự động tìm kiếm các lớp PHP trong thư mục 1 của dự án: 2
Cài đặt các phụ thuộc: Điều này sẽ tạo một thư mục 7 và cài đặt dotenv bên trong nó.Tạo tệp 8 ở cấp cao nhất để thư mục 7 và tệp 4 cục bộ sẽ bị bỏ qua: 1Tạo tệp 2 cho các biến xác thực OKTA:
Có hai bộ thông tin đăng nhập - một cho ứng dụng dịch vụ (API REST) và một bộ cho ứng dụng khách sẽ sử dụng API. Một số biến sẽ được chia sẻ giữa hai ứng dụng (nhà phát hành, phạm vi và đối tượng). Tạo một tệp 3 tải các biến môi trường (sau đó nó cũng sẽ thực hiện một số bootstrapping bổ sung cho dự án của chúng tôi):
Sao chép tệp 2 vào 4 và kiểm tra mã bootstrap để xác nhận nó xuất ra ‘API: // mặc định,:
Thực hiện phiên bản API REST ban đầuAPI còn lại sẽ có 3 điểm cuối công khai:
Phiên bản ban đầu sẽ không yêu cầu bất kỳ xác thực/ủy quyền. Tạo thư mục 6 và tệp 7 để phục vụ như một bộ điều khiển phía trước và xử lý các yêu cầu HTTP đến:
Sửa đổi tệp 3 để nó không xuất ra bất cứ điều gì:
Bắt đầu máy chủ PHP tích hợp và kiểm tra bộ điều khiển phía trước:
Tải 9 và bạn sẽ thấy phản hồi không tìm thấy 404. Tuy nhiên, nếu bạn tải tuyến đường Get hợp lệ: 0, bạn sẽ thấy dữ liệu tuyến được tìm thấy:
Bạn sẽ cần một công cụ như Postman để kiểm tra API đầy đủ bao gồm các yêu cầu POST. Lưu ý: Khi thực hiện các yêu cầu POST, hãy đảm bảo đặt loại nội dung thành JSON ( 1), loại cơ thể thành RAW và dán tải trọng ở định dạng JSON.Sử dụng Postman để xác nhận rằng ba tuyến chính xác được hiển thị và tất cả các URL khác dẫn đến phản hồi không tìm thấy 404 trước khi tiến hành thêm. Tạo một tệp 2 để phục vụ như một bộ điều khiển cho các điểm cuối API. Vì việc triển khai API thực tế không phải là chủ đề của bài viết này, các phương thức điều khiển đã giành được bất cứ điều gì hữu ích - chắc chắn, sẽ không có xác thực dữ liệu hoặc bất kỳ mô hình cơ sở dữ liệu nào để thao tác.
Sửa đổi 7 để ủy quyền cho các phương thức bộ điều khiển để xử lý các tuyến đường cuối: 0Kiểm tra các điểm cuối tuyến đường trong Postman một lần nữa và xác nhận chúng tạo ra các phản hồi JSON dự kiến. Sử dụng Okta và OAuth 2.0 để bảo mật APIAPI sẽ sử dụng OKTA làm máy chủ ủy quyền. Bạn sẽ thực hiện luồng thông tin đăng nhập của khách hàng trong bài tập này. Lưu lượng này được khuyến nghị để xác thực máy tính đến máy khi khách hàng riêng tư và có thể giữ bí mật. Để đơn giản trong bài viết này, cả ứng dụng máy khách và máy chủ sẽ được lưu trữ trong cùng một kho lưu trữ và sẽ chia sẻ các phần của cấu hình OKTA. Quá trình ủy quyền hoạt động như thế này:
Có hai cách để xác minh mã thông báo:
API sẽ sử dụng phương pháp cục bộ để ủy quyền cho các phương thức 4 và 5, nhưng nó sẽ sử dụng phương pháp từ xa an toàn hơn để ủy quyền cho phương pháp 6 vì phương pháp này yêu cầu mức bảo mật cao nhất, ngay cả với chi phí mất hiệu suất nhỏ.Khi sử dụng xác minh cục bộ, có thể người dùng có thể bị đình chỉ tại okta nhưng mã thông báo vẫn sẽ được coi là hợp lệ bởi máy chủ API vì nó không kiểm tra trạng thái người dùng trong thời gian thực - nó chỉ xác minh tính hợp lệ của mã thông báo được cung cấp . Thiết lập oktaĐăng nhập vào tài khoản OKTA của bạn hoặc tạo một tài khoản mới miễn phí, tạo máy chủ ủy quyền của bạn và thiết lập ứng dụng khách của bạn. Đăng nhập vào bảng điều khiển nhà phát triển của bạn, điều hướng đến API, sau đó vào tab Máy chủ ủy quyền:API, then to the Authorization Servers tab: Nhấp vào liên kết đến máy chủ mặc định của bạn. Sao chép trường 7 từ tab Cài đặt này và thêm nó vào tệp 4 (thay thế URL bằng của riêng bạn): 1Nhấp vào biểu tượng Chỉnh sửa, chuyển đến tab phạm vi và nhấp vào Thêm phạm vi để thêm phạm vi cho API còn lại:Edit icon, go to the Scopes tab and click Add Scope to add a scope for the REST API: Đặt tên cho nó 9 và để lại phần còn lại của cài đặt như hiện tại.Thêm phạm vi vào tệp 4:Tạo một ứng dụng khách tiếp theo. Chuyển đến các ứng dụng, nhấp vào Thêm ứng dụng, chọn Dịch vụ, sau đó nhấp vào Tiếp theo:Applications, click Add Application, select Service, then click Next: Tiêu đề Người quản lý khách hàng dịch vụ và nhấp vào xong. Sao chép ID máy khách và bí mật máy khách từ màn hình và cũng đặt chúng vào tệp 4:Customer
Manager and click Done. Copy the Client ID and Client Secret from the screen, and put them in the 4 file as well: 2Cuối cùng, hãy tạo một ứng dụng khách (ứng dụng dịch vụ) khác để đại diện cho API, vì API không có quyền truy cập vào thông tin đăng nhập ứng dụng khách hàng, nhưng nó sẽ cần thông tin đăng nhập của khách hàng để tự ủy quyền khi truy cập một số điểm cuối OKTA. Chuyển đến các ứng dụng, nhấp vào Thêm ứng dụng, chọn Dịch vụ, sau đó nhấp vào Tiếp theo. Tiêu đề API Trình quản lý khách hàng dịch vụ và nhấp xong:Applications, click Add Application, select Service, then click Next. Title the service Customer Manager API and click Done: Sao chép ID máy khách và bí mật máy khách từ màn hình và đặt chúng vào tệp 4:Client ID and Client Secret from the screen and put them in the 4 file as well: 3Có được mã thông báo truy cập từ OktaTạo một thư mục 3 mới trong dự án để lưu trữ các tệp ứng dụng máy khách. Tạo tệp 4: 4Gọi tệp từ dòng lệnh và sao chép mã thông báo: Mã thông báo sẽ trông giống như thế này: 5Cập nhật bộ điều khiển phía trước để nó yêu cầu ủy quyền cho tất cả các điểm cuối API (sử dụng xác thực cục bộ cho các phương thức chỉ mục và lưu trữ và xác thực từ xa cho phương thức tính phí). Tại đây, mã đầy đủ của 7 cho rõ ràng: 6Có rất nhiều điều đang diễn ra ở đây nhưng những phần quan trọng nhất là:
Xác thực cục bộ xác minh các thuộc tính sau của mã thông báo:
Ở bước tiếp theo, bạn sẽ kiểm tra xác thực bằng Postman. Cung cấp mã thông báo truy cập dưới dạng tiêu đề 8 với giá trị 9 với mỗi yêu cầu HTTP cho API bạn thực hiện. Giá trị ví dụ của tiêu đề: 7Kiểm tra các điểm cuối một lần nữa trong Postman. Nếu bạn không cung cấp mã thông báo hợp lệ, bạn sẽ nhận được phản hồi 0. Nếu bạn cung cấp mã thông báo hợp lệ, bạn nên nhận các phản hồi JSON bình thường.Thu hồi mã thông báo truy cậpTạo một tệp mới 1: 8Gọi công cụ như thế này (thay thế 2 bằng mã thông báo bạn muốn thu hồi): 9Example: 0Sau khi thu hồi mã thông báo, hãy thử lại tất cả các cuộc gọi API với mã thông báo đó. Bạn sẽ thấy rằng 3 và 4 vẫn hoạt động (vì chúng chỉ thực hiện xác thực cục bộ), nhưng 5 trả về phản hồi 0 (vì xác thực từ xa không thành công vì mã thông báo không còn hoạt động nữa).Tìm hiểu thêm về ủy quyền OAuth 2.0 trong PHPBạn có thể tìm thấy toàn bộ ví dụ mã trên GitHub. Nếu bạn muốn đào sâu hơn vào các chủ đề được đề cập trong bài viết này, các tài nguyên sau đây là một điểm khởi đầu tuyệt vời:
Giống như những gì bạn đã học được hôm nay? Theo dõi chúng tôi trên Twitter, như chúng tôi trên Facebook, hãy xem chúng tôi trên LinkedIn và đăng ký kênh YouTube của chúng tôi để biết nội dung tuyệt vời hơn! Làm thế nào sử dụng OAuth 2.0 cho các cuộc gọi API REST trong PHP?Điều kiện tiên quyết duy nhất là PHP, nhà soạn nhạc và tài khoản nhà phát triển OKTA miễn phí ... Tạo bộ xương API còn lại .. Thực hiện phiên bản API REST ban đầu .. Sử dụng Okta và OAuth 2.0 để bảo mật API .. Thiết lập okta .. Có được mã thông báo truy cập từ Okta .. Thêm ủy quyền mã thông báo vào API .. Thu hồi mã thông báo truy cập .. OAuth2 2.0 hoạt động như thế nào trong API REST?OAuth2 cho phép ủy quyền mà không cần ứng dụng bên ngoài nhận địa chỉ email hoặc mật khẩu của người dùng.Thay vào đó, ứng dụng bên ngoài nhận được một mã thông báo cho phép truy cập vào tài khoản của người dùng.Người dùng có thể thu hồi mã thông báo cho một ứng dụng mà không ảnh hưởng đến quyền truy cập bởi bất kỳ ứng dụng nào khác.allows authorization without the external application getting the user's email address or password. Instead, the external application gets a token that authorizes access to the user's account. The user can revoke the token for one application without affecting access by any other application.
OAuth2 trong PHP là gì?League/OAuth2-Server là một triển khai tuân thủ tiêu chuẩn của máy chủ ủy quyền OAuth 2.0 được viết bằng PHP giúp làm việc với tầm thường của OAuth 2.0.Bạn có thể dễ dàng định cấu hình máy chủ OAuth 2.0 để bảo vệ API của mình bằng mã thông báo truy cập hoặc cho phép khách hàng yêu cầu mã thông báo truy cập mới và làm mới chúng.a standards compliant implementation of an OAuth 2.0 authorization server written in PHP which makes working with OAuth 2.0 trivial. You can easily configure an OAuth 2.0 server to protect your API with access tokens, or allow clients to request new access tokens and refresh them.
Làm cách nào để thêm OAuth vào API REST?Tạo API nhà cung cấp OAuth 2.0.. Trong một cửa sổ lệnh, thay đổi sang thư mục dự án mà bạn đã tạo trong hướng dẫn hướng dẫn: Tạo định nghĩa API gọi RESKE .. Trong trình thiết kế API, nhấp vào tab API .. Nhấp vào Thêm> API nhà cung cấp OAuth 2.0 .. Hoàn thành các trường theo bảng sau: .... Nhấp vào Tạo API .. |