Hướng dẫn where are php tokens stored? - mã thông báo php được lưu trữ ở đâu?

Tôi cần thêm các sự kiện vào lịch Google với API, trên localhost của tôi, tôi đã làm cho nó hoạt động, tuy nhiên tôi không thể nhớ mã thông báo đến từ đâu, các bạn có thể nhắc tôi điều này không? Tệp Toke.json


Mã thông báo JSON Web [JWTS] đã biến thành tiêu chuẩn de-facto để xác thực không trạng thái ứng dụng di động, ứng dụng web một trang và giao tiếp với máy. Họ hầu hết đã thay thế phương thức xác thực truyền thống [phiên phía máy chủ] vì một số lợi ích chính:

  • Chúng được phân cấp và di động [bạn có thể yêu cầu mã thông báo từ một dịch vụ chuyên dụng, sau đó sử dụng nó với nhiều phụ trợ]
  • Không cần các phiên phía máy chủ - JWT có thể chứa tất cả các thông tin cần thiết về người dùng và thông tin được bảo vệ chống lại sửa đổi
  • Họ hoạt động tốt và có thể mở rộng quy mô dễ dàng

Trước khi bạn bắt đầu làm việc với JWTS, điều quan trọng là phải hiểu rằng JWT được mã hóa và không được mã hóa - chúng không ẩn dữ liệu có bên trong và người dùng có thể đọc nó. Bạn không nên lưu trữ bất kỳ thông tin nhạy cảm bên trong JWT.

Có một số lượng lớn các thư viện được thiết kế để giúp bạn làm việc với JWT trong ứng dụng của bạn. Trong bài viết này, trước tiên tôi sẽ hướng dẫn bạn xây dựng và xác minh JWT của riêng bạn bằng gói Firebase/PHP-JWT. Sau đó, tôi sẽ chỉ cho bạn cách tạo ứng dụng máy từ máy ở OKTA và sử dụng luồng thông tin đăng nhập của máy khách để có mã thông báo truy cập JWT từ máy chủ Okta của bạn.

Các yêu cầu để hoàn thành các ví dụ là: Tài khoản OKTA [MIỄN PHÍ], PHP, Trình soạn thảo và Công cụ dòng lệnh

composer require firebase/php-jwt
9.

Tại sao okta?

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. Đăng ký tài khoản nhà phát triển miễn phí mãi mãi và khi bạn hoàn thành, hãy quay lại để tìm hiểu thêm về xác thực mã thông báo trong PHP.

Có các luồng xác thực khác nhau trong OKTA, tùy thuộc vào việc ứng dụng máy khách là công khai hay riêng tư và nếu có người dùng liên quan hay giao tiếp chỉ là máy từ máy. Lưu lượng thông tin đăng nhập của khách hàng mà bạn sẽ thực hiện phù hợp nhất cho giao tiếp với máy đến máy nơi ứng dụng khách là riêng tư [và có thể tin tưởng để giữ bí mật].

JWT là gì?

JWT là chuỗi được mã hóa cơ sở64. Chúng khép kín và có chữ ký mật mã, điều đó có nghĩa là nội dung của chúng có thể được kiểm tra và xác minh. JWTS có thể được ký kết bằng cách sử dụng bí mật chung [với thuật toán HMAC] hoặc cặp khóa công khai/riêng tư bằng RSA hoặc ECDSA. Nếu người dùng độc hại thay đổi nội dung mã thông báo, JWT sẽ không xác minh.

Định dạng của JWT là:

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
0

Thành phần tiêu đề chứa thông tin về phương thức ký. Thành phần tải trọng là thông tin về người dùng [còn được gọi là ‘khiếu nại của JWT]. Chữ ký được tính toán bởi máy chủ xác thực bằng cách sử dụng bí mật được chia sẻ hoặc khóa riêng.

Nếu bạn muốn tìm hiểu thêm về cách sử dụng JWTs một cách an toàn và cách xây dựng và xác minh chúng từ đầu trong PHP [mà không cần sử dụng bất kỳ thư viện bên ngoài nào], bạn có thể kiểm tra bài viết trước của tôi tạo và xác minh JWT trong PHP với OAuth 2.0

Sử dụng JWTS với OAuth 2.0 và OpenID Connect trong PHP

Trước khi giải thích vai trò của JWT trong OAuth 2.0 và OpenID Connect, điều quan trọng là phải làm rõ các khái niệm xác thực và ủy quyền trong bảo mật thông tin.

Xác thực có nghĩa là xác nhận rằng người dùng là người mà họ tuyên bố là. Ủy quyền có nghĩa là chứng minh rằng người dùng được xác thực có quyền làm điều gì đó trong một hệ thống.

OpenID Connect là một giao thức xác thực và OAuth 2.0 là một tiêu chuẩn mở cho ủy quyền. OpenID Connect sử dụng mã thông báo ID và OAuth 2.0 sử dụng mã thông báo truy cập. Cùng nhau, họ cung cấp một khung hoàn chỉnh để xác thực và ủy quyền cho người dùng [hoặc máy móc] trong các ứng dụng và máy chủ web/di động.

Mã thông báo OAuth 2.0 không phải là JWT, nhưng nhiều triển khai [bao gồm cả OKTA] sử dụng JWTS vì các thuộc tính mong muốn của chúng.

Các mã thông báo OpenID Connect [OIDC], luôn luôn là JWT. Okta sử dụng phương thức ký cặp khóa công khai/riêng tư. Các mã thông báo ID được ký bằng các khóa web JSON riêng [JWK], đặc điểm kỹ thuật mà bạn có thể tìm thấy ở đây: JSON Web Key [JWK]. Bạn cần truy xuất các khóa này và lưu trữ chúng trên máy chủ của mình nếu bạn muốn xác minh mã thông báo Okta [cách khác, bạn có thể yêu cầu OKTA xác minh mã thông báo cho bạn, nhưng điều này đòi hỏi thêm một chuyến đi vòng đến máy chủ ủy quyền].

Mã thông báo ID OIDC bao gồm các khiếu nại chung sau đây:

  • Yêu cầu
    openssl genrsa -out mykey.pem 1024
    openssl rsa -in mykey.pem -pubout > mykey.pub
    
    1 [nhà phát hành] phù hợp với định danh của máy chủ ủy quyền Okta của bạn
  • Yêu cầu
    openssl genrsa -out mykey.pem 1024
    openssl rsa -in mykey.pem -pubout > mykey.pub
    
    2 [đối tượng] sẽ khớp với ID máy khách được sử dụng để yêu cầu mã thông báo ID
  • Yêu cầu
    openssl genrsa -out mykey.pem 1024
    openssl rsa -in mykey.pem -pubout > mykey.pub
    
    3 [ban hành tại thời điểm] cho biết khi nào mã thông báo ID này được phát hành
  • Yêu cầu
    openssl genrsa -out mykey.pem 1024
    openssl rsa -in mykey.pem -pubout > mykey.pub
    
    4 [thời gian hết hạn] là thời gian mà mã thông báo này sẽ hết hạn
  • Giá trị yêu cầu
    openssl genrsa -out mykey.pem 1024
    openssl rsa -in mykey.pem -pubout > mykey.pub
    
    5 phải khớp với bất cứ điều gì đã được thông qua khi yêu cầu mã thông báo ID

Tạo và xác minh JWTS trong PHP

Bạn sẽ sử dụng gói

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
6 để tạo và xác minh JWT của riêng bạn. Tôi cũng sẽ chỉ cho bạn cách sử dụng giải mã Base64 để đọc các khiếu nại của JWT và chứng minh rằng nó chỉ đơn giản là được mã hóa và không được mã hóa [nhắc nhở: Không lưu trữ bất kỳ thông tin nhạy cảm nào trong JWT].

Bắt đầu bằng cách tạo một thư mục mới và khởi tạo nó như một dự án PHP mới với sự phụ thuộc vào

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
6:

composer require firebase/php-jwt

Tiếp theo, hãy tạo một cặp khóa riêng/công khai bằng cách sử dụng OpenSSL trên dòng lệnh:

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub

Bạn sẽ sử dụng những thứ này để ký và xác minh JWTS của bạn.

Tạo tệp

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
8 trong thư mục với các nội dung sau để các tệp khóa và tệp
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
9 của bạn sẽ không được thêm vào kho lưu trữ Git:

/vendor/
.env
mykey.pem
mykey.pub

Tạo tệp

/vendor/
.env
mykey.pem
mykey.pub
0 để tải thư viện nhà cung cấp:

Bài Viết Liên Quan

Chủ Đề