Okta php

Làm việc với OAuth & NBSP; .  

Nội dung chính Hiển thị

  • Các tính năng gần đây
  • Design for & NBSP;
  • in sao octa?
  • JWT là gì?
  • Use JWTS with OAuth 2. 0 và OpenID Connect trong PHP
  • Create and verify JWTS in PHP
  • Một lần nữa, hãy chạy nó từ dòng lệnh với mã thông báo bạn đã tạo
  • Tạo một ứng dụng bằng máy sang máy trong PHP và xác minh JWTS
  • Sử dụng luồng thông tin đăng nhập của máy khách để tạo mã thông báo truy cập JWT trong PHP
  • Tìm hiểu thêm về JWTS trong Php, OAuth 2. 0 v Kết nối OpenID
  • Làm cách nào để nhận mã thông báo ủy quyền trong PHP?
  • Làm cách nào để tạo mã xác thực thông báo?
  • Làm thế nào để tôi tạo mã thông báo của người mang?
  • JWT PHP là gì?

Nội dung chính

  • Các tính năng gần đây
  • Design for & NBSP;
  • in sao octa?
  • JWT là gì?
  • Use JWTS with OAuth 2. 0 và OpenID Connect trong PHP
  • Create and verify JWTS in PHP
  • Các cuộc tấn công bảo mật vào thuật toán ký tự JWT trong PHP
  • Tạo một ứng dụng bằng máy sang máy trong PHP và xác minh JWTS
  • Sử dụng luồng thông tin đăng nhập của máy khách để tạo mã thông báo truy cập JWT trong PHP
  • Tìm hiểu thêm về JWTS trong Php, OAuth 2. 0 v Kết nối OpenID
  • Làm cách nào để nhận mã thông báo ủy quyền trong PHP?
  • Làm cách nào để tạo mã xác thực thông báo?
  • Làm thế nào để tôi tạo mã thông báo của người mang?
  • JWT PHP là gì?

Vì tôi đã rời khỏi trò chơi PHP trong thời gian, tôi đã nghiên cứu cách tạo ra các mã thông báo như vậy mà không cần vithêm thư.  

// bin2hex(random_bytes($length))
$token = bin2hex(random_bytes(64));

/*
  Examples:

  39e9289a5b8328ecc4286da11076748716c41ec7fb94839a689f7dac5cdf5ba8bdc9a9acdc95b95245f80a00d58c9575c203ceb541507cce40dd5a96e9399f4a
  1c46538c712e9b5bf0fe43d692147004f617b494d004e29daaf33e4528f253db5d911a690856f0b77cfa98103c8231bffff869f179125d17d28e52bfadb9f205
  ...
*/

Nếu bạn không sử dụng PHP7 trở lên, bạn có thể dự phòng sau

________một

Có sự ủng hộ của OpenSSL cho việc tạo mã thông báo & NBSP; .  

Okta php

Các tính năng gần đây

  • Design for & NBSP;

    in sao octa?

JWT là gì?

  • Use JWTS with OAuth 2. 0 và OpenID Connect trong PHP
  • Create and verify JWTS in PHP
  • Các cuộc tấn công bảo mật vào thuật toán ký tự JWT trong PHP

Tạo một ứng dụng bằng máy sang máy trong PHP và xác minh JWTS

Sử dụng luồng thông tin đăng nhập của máy khách để tạo mã thông báo truy cập JWT trong PHP

Tìm hiểu thêm về JWTS trong Php, OAuth 2. 0 v Kết nối OpenID

composer require firebase/php-jwt
0

in sao octa?

JWT là gì?

Use JWTS with OAuth 2. 0 và OpenID Connect trong PHP

JWT là gì?

Use JWTS with OAuth 2. 0 và OpenID Connect trong PHP

Create and verify JWTS in PHP

composer require firebase/php-jwt
1

Các cuộc tấn công bảo mật vào thuật toán ký tự JWT trong PHP

Tạo một ứng dụng bằng máy sang máy trong PHP và xác minh JWTS

Use JWTS with 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

Mã thông báo OAuth 2. 0 không phải là JWT, mà là 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 họ

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 từ khóa công khai/riêng tư. ID mã thông báo được ký bằng các từ khóa web JSON riêng (JWK), đặc điểm kỹ thuật mà bạn có thể tìm thấy ở đây. JSON WebKey (JWK). Bạn cần truy xuất các từ 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 (theo 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 yêu cầu 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
    composer require firebase/php-jwt
    
    2 (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
    composer require firebase/php-jwt
    
    3 (đối tượng) sẽ khớp với ID mà máy khách đang sử dụng để yêu cầu mã thông báo ID
  • Yêu cầu
    composer require firebase/php-jwt
    
    4 (ban hành tại thời điểm) để biết khi nào mã thông báo ID này được phát hành
  • Yêu cầu
    composer require firebase/php-jwt
    
    5 (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
    composer require firebase/php-jwt
    
    6 phải khớp với bất kỳ điều gì đã được thông báo khi yêu cầu mã thông báo ID

Create and verify JWTS in PHP

You will use goi

composer require firebase/php-jwt
7 để tạo và xác minh JWT của riêng bạn. Tôi 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à lóng lánh và cũng rất hiếm. Không lưu trữ bất kỳ thông tin cảm ứng nào trong JWT)

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

composer require firebase/php-jwt
7.
composer require firebase/php-jwt

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

$token = bin2hex(openssl_random_pseudo_bytes(64));
2

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

Create file

composer require firebase/php-jwt
9 trong thư mục với các nội dung sau cho các tệp khóa và tệp
$token = bin2hex(openssl_random_pseudo_bytes(64));
20 của bạn sẽ không được thêm vào kho lưu trữ Go.
$token = bin2hex(openssl_random_pseudo_bytes(64));
5

Create file

composer require firebase/php-jwt
9 trong thư mục với các nội dung sau cho các tệp khóa và tệp
$token = bin2hex(openssl_random_pseudo_bytes(64));
20 của bạn sẽ không được thêm vào kho lưu trữ Go.
$token = bin2hex(openssl_random_pseudo_bytes(64));
5

Create file

$token = bin2hex(openssl_random_pseudo_bytes(64));
22.
$token = bin2hex(openssl_random_pseudo_bytes(64));
9
composer require firebase/php-jwt
9 trong thư mục với các nội dung sau để khóa tệp và tệp
$token = bin2hex(openssl_random_pseudo_bytes(64));
20 của bạn sẽ không được thêm vào kho lưu trữ Go.
$token = bin2hex(openssl_random_pseudo_bytes(64));
5
$token = bin2hex(openssl_random_pseudo_bytes(64));
21 để tải thư viện nhà cung cấp.
$token = bin2hex(openssl_random_pseudo_bytes(64));
7____20

This code create a JWT and in it ra. Nó sử dụng khóa riêng và thuật toán RS256 để đăng nhập vào nó

Chạy mã từ dòng lệnh và bạn sẽ thấy một cái gì đó như thế này

Công cụ tiếp theo mà bạn sẽ tạo ra là

composer require firebase/php-jwt
4
$token = bin2hex(openssl_random_pseudo_bytes(64));
23 nhận JWT làm đối số và trả về các khiếu nại đã được giải mã (mà không sử dụng bất kỳ từ khóa nào, hoặc thậm chí không.
$token = bin2hex(openssl_random_pseudo_bytes(64));
23
composer require firebase/php-jwt
3____125
$token = bin2hex(openssl_random_pseudo_bytes(64));
25
$token = bin2hex(openssl_random_pseudo_bytes(64));
0

Nếu bạn chạy nó với phím ví dụ từ bước trước, bạn sẽ thấy đầu ra như thế này

ngày 11

Điều này chứng tỏ rằng tất cả các khiếu nại đều có thể đọc được tự làm mà không cần sử dụng bất kỳ từ khóa nào. Các từ khóa được sử dụng để xác minh chữ ký (chỉ sử dụng từ khóa công khai), đây là công cụ cuối cùng mà bạn sẽ xây dựng

Một lần nữa, hãy chạy nó từ dòng lệnh với mã thông báo bạn đã tạo

Lưu ý rằng khi xác minh một JWT thực sự, bạn cũng phải đảm bảo rằng nó không hết hạn hoặc được đưa vào danh sách đen. Ngoài ra, hãy chắc chắn rằng không dựa vào thuật toán chỉ được định nghĩa trong JWT, nhưng sử dụng cùng một thuật toán như thuật toán được sử dụng. Đây là một chủ đề quan trọng đến mức nó yêu cầu một số chi tiết bổ sung trong phân đoạn tiếp theo

$token = bin2hex(openssl_random_pseudo_bytes(64));
27.
$token = bin2hex(openssl_random_pseudo_bytes(64));
2

Các cuộc tấn công bảo mật vào thuật toán ký tự JWT trong PHP

Nếu bạn nhìn kỹ vào tiêu đề JWT, bạn sẽ thấy trường

$token = bin2hex(openssl_random_pseudo_bytes(64));
28 hoạt động). Vì khóa công bố đã được biết đến, bạn có thể ký hợp đồng chính xác JWT với nó và họ sẽ được chấp nhận

Bạn có thể tìm hiểu thêm về các cuộc tấn công này (và các cuộc tấn công khác) bằng cách đọc xác thực JWT tấn công, hoặc bằng cách xem Aaron Parecki đánh giá. Khi mọi thứ trở nên sai lầm

Kết luận. Luôn sử dụng cùng một thuật toán để ký và xác minh JWT. Bỏ qua thuật toán chỉ được định nghĩa trong tiêu đề JWT

Tạo một ứng dụng bằng máy sang máy trong PHP và xác minh JWTS

Trong phần này, tôi sẽ chỉ cho bạn cách tạo ứng dụng cho máy sang máy ở OKTA và cách sử dụng thư viện

$token = bin2hex(openssl_random_pseudo_bytes(64));
29 để có mã thông báo truy cập JWT từ máy chủ ủy quyền Okta của bạn thông qua luồng thông tin đăng nhập của máy khách

Luồng thông tin đăng nhập của khách hàng phù hợp nhất cho giao tiếp với máy đến máy (nơi khách hàng có thể tưởng tượng được giữ b). Tại đây, tài liệu của dòng chảy. OKTA. Thông tin xác thực của khách hàng

Nếu bạn vẫn chưa tạo tài khoản nhà phát triển Okta miễn phí mãi mãi, hãy thực hiện ngay bây giờ và sau đó tiếp tục với hướ

Đăng nhập và chuyển sang các ứng dụng, sau đó nhấp vào Thêm ứng dụng. Ứng dụng, sau đó nhấp vào Thêm ứng dụng. Ứng dụng, sau đó nhấp vào Thêm ứng dụng

Chọn Dịch vụ (máy sang máy) và nhấp vào Tiếp theo. Dịch vụ (Machine-to-Machine) và nhấp vào Tiếp theo. Dịch vụ (Machine-to-Machine) và nhấp vào Tiếp theo

Nhập một tiêu đề cho ứng dụng của bạn và nhấp vào hoàn tất. Vui lòng lưu các giá trị trong các trường

$token = bin2hex(openssl_random_pseudo_bytes(64));
50 và
$token = bin2hex(openssl_random_pseudo_bytes(64));
51 được hiển thị trên màn hình tiếp theo, bạn sẽ cần chúng khi xây dựng ứng dụng. xong. Lưu ý các giá trị trong các trường
$token = bin2hex(openssl_random_pseudo_bytes(64));
50 và
$token = bin2hex(openssl_random_pseudo_bytes(64));
51 được hiển thị trên màn hình tiếp theo, bạn sẽ cần chúng khi xây dựng ứng dụng. xong. Lưu ý các giá trị trong các trường
$token = bin2hex(openssl_random_pseudo_bytes(64));
50 và
$token = bin2hex(openssl_random_pseudo_bytes(64));
51 được hiển thị trên màn hình tiếp theo, bạn sẽ cần chúng khi xây dựng ứng dụng

Trước khi tạo ứng dụng, có một điều nữa để định cấu hình trong OKTA. bạn cần tạo phạm vi cho ứng dụng của mình

Truy cập API > Máy chủ ủy quyền, lưu ý trường

$token = bin2hex(openssl_random_pseudo_bytes(64));
52 (bạn cần phải có nó khi định cấu hình ứng dụng) và nhấp vào máy chủ ủy quyền mặc định. Chuyển đến tab phạm vi và nhấp vào Thêm phạm vi. Phạm vi thiết lập của bạn như thế này. Api > Máy chủ ủy quyền, lưu ý trường
$token = bin2hex(openssl_random_pseudo_bytes(64));
52 (bạn sẽ cần nó khi định cấu hình ứng dụng) và nhấp vào máy chủ ủy quyền mặc định. Chuyển đến tab Phạm vi và nhấp vào Thêm Phạm vi. Thiết lập phạm vi của bạn như thế này. Api > Máy chủ ủy quyền, lưu ý trường
$token = bin2hex(openssl_random_pseudo_bytes(64));
52 (bạn sẽ cần nó khi định cấu hình ứng dụng) và nhấp vào máy chủ ủy quyền mặc định. Chuyển đến tab Phạm vi và nhấp vào Thêm Phạm vi. Thiết lập phạm vi của bạn như thế này

Bạn nên sao chép 4 giá trị nếu bạn làm chính xác mọi thứ

$token = bin2hex(openssl_random_pseudo_bytes(64));
53,
$token = bin2hex(openssl_random_pseudo_bytes(64));
54,
$token = bin2hex(openssl_random_pseudo_bytes(64));
52 và
$token = bin2hex(openssl_random_pseudo_bytes(64));
56 (
$token = bin2hex(openssl_random_pseudo_bytes(64));
57)

Sử dụng luồng thông tin đăng nhập của máy khách để tạo mã thông báo truy cập JWT trong PHP

Tôi sẽ chỉ cho bạn cách nhận mã thông báo truy cập từ máy chủ ủy quyền Okta của bạn cho ứng dụng từ máy chủ ủy quyền từ máy chủ ủy quyền Okta của bạn cho ứng dụng từ máy chủ ủy quyền từ mãy nguồn của bạn bn bn bàn bàn giấy. Chúng tôi sẽ sử dụng thư viện

$token = bin2hex(openssl_random_pseudo_bytes(64));
29

Bắt đầu bằng cách tạo tệp

$token = bin2hex(openssl_random_pseudo_bytes(64));
59 như thế này.
$token = bin2hex(openssl_random_pseudo_bytes(64));
3

Sau đó, sao chép nó vào

$token = bin2hex(openssl_random_pseudo_bytes(64));
20 (hãy nhớ rằng, tệp này phải có trong
composer require firebase/php-jwt
9 để nó không được thêm vào repo) và điền thông tin của bạn từ phần trước

You have to install the new phụ thuộc. Ngoài thư viện

$token = bin2hex(openssl_random_pseudo_bytes(64));
29, bạn cũng cần phải_______173 để ứng dụng có thể đọc tệp
$token = bin2hex(openssl_random_pseudo_bytes(64));
20 của bạn và
$token = bin2hex(openssl_random_pseudo_bytes(64));
75 (được yêu cầu bởi Okta). You have __
composer require firebase/php-jwt
7 (one request OKTA other) from the ví dụ trước

Run command after

$token = bin2hex(openssl_random_pseudo_bytes(64));
4

Update file

$token = bin2hex(openssl_random_pseudo_bytes(64));
21.
$token = bin2hex(openssl_random_pseudo_bytes(64));
5

First tool you build is

$token = bin2hex(openssl_random_pseudo_bytes(64));
78 (được sử dụng để yêu cầu truy cập mã thông báo truy cập từ máy chủ ủy quyền Okta).
$token = bin2hex(openssl_random_pseudo_bytes(64));
78
$token = bin2hex(openssl_random_pseudo_bytes(64));
6

Chạy nó từ dòng lệnh, bạn sẽ nhận được đầu ra như thế này

$token = bin2hex(openssl_random_pseudo_bytes(64));
7

Thứ hai công cụ là

$token = bin2hex(openssl_random_pseudo_bytes(64));
90. Nó chấp nhận truy cập mã thông báo từ dòng lệnh và xác minh nó.
$token = bin2hex(openssl_random_pseudo_bytes(64));
90
$token = bin2hex(openssl_random_pseudo_bytes(64));
8

Chạy nó với mã thông báo truy cập bạn vừa nhận được và bạn sẽ thấy đầu ra tương tự

$token = bin2hex(openssl_random_pseudo_bytes(64));
9

Nếu mã thông báo không hợp lệ hoặc hết hạn, bạn sẽ thấy thông báo lỗi

Đó là ý chính của thông tin xác thực của máy khách JWTS và OKTA. Mặc dù vậy, có nhiều hơn nữa để tìm hiểu về các chủ đề này, hãy kiểm tra các tài nguyên trong phần tiếp theo để tìm m êphêu chế độ

Tìm hiểu thêm về JWTS trong Php, OAuth 2. 0 v Kết nối OpenID

Bạn có thể tìm thấy toàn bộ ví dụ mã ở đây. Liên kết GitHub

Nếu bạn muốn tìm hiểu sâu hơn về các chủ đề được cập nhật trong bài viết này, các tài nguyên sau đây là điểm khởi đầu tuy nhiên

  • Create and verify JWTS in PHP with OAuth 2. 0
  • Thêm xác thực vào ứng dụng PHP của bạn trong 5 phút
  • Đơn giản build register trong PHP

Giống như những gì bạn đã học được hôm nay?

Làm cách nào để nhận mã thông báo ủy quyền trong PHP?

Để gửi yêu cầu GET với tiêu đề ủy quyền mã thông báo của người mang bằng PHP, bạn cần thực hiện yêu cầu GET HTTP và cung cấp sự cân nhắc m g. Bearer {token} Tiêu đề HTTP. thực hiện yêu cầu HTTP GET và cung cấp Mã thông báo người gửi của bạn với Ủy quyền. Tiêu đề HTTP mang {token}. thực hiện yêu cầu HTTP GET và cung cấp Mã thông báo mang của bạn cùng với Ủy quyền. Tiêu đề HTTP {token} của người mang .

Làm cách nào để tạo mã xác thực thông báo?

To create a auth code auth new. .

Ở góc trên bên phải của bảng điều khiển, hãy mở menu hồ sơ (

Trên trang Mã thông báo Auth, nhấp vào Tạo mã thông báo

Nhập một mô tả thân thiện cho mã thông báo xác thực

Access to Create notification code

Làm thế nào để tôi tạo mã thông báo của người mang?

Tạo mã thông báo người mang OAuth. .

Open a new tab in application Postman

Đối với phương thức HTTP, chọn Bài đăng

Lật vào tab ủy quyền và chọn OAuth 2. 0 lam type

Truy cập vào Nhận mã thông báo truy cập mới

Để xác minh rằng mã thông báo của người mang đã được thêm vào, hãy nhấp vào tab Tiêu đề và nhấp vào các tiêu đề ẩn