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

Tôi muốn chuyển mã thông báo truy cập trong tiêu đề xác thực cho API mà tôi đang tạo (đang tìm hiểu) và tôi đã đọc rằng tiêu đề ủy quyền phải có giá trị là 'Bearer aTokenStringHere'

 

Cách tốt nhất để lấy giá trị tiêu đề này và phân tích cú pháp nó là gì, có phải chỉ là trường hợp lấy tiêu đề Ủy quyền từ mẫu yêu cầu và sau đó loại bỏ phần Bearer của chuỗi?

 

Ngoài ra, bạn có thể giải thích lý do tại sao chúng tôi phải sử dụng Bearer như một phần của giá trị cho tiêu đề Ủy quyền không?

 

Thanks

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

requinix

Đăng ngày 20 tháng 1 năm 2017

requinix

  • Làm cách nào để nhận mã thông báo mang trong PHP?
    Làm cách nào để nhận mã thông báo mang trong PHP?

  • quản trị viên
  • Làm cách nào để nhận mã thông báo mang trong PHP?
    • 14. 5k
    • 300
  • Vị trí. Mỹ/Los_Angeles

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017

Lấy nó từ tiêu đề HTTP_AUTHORIZATION trong $_SERVER, sau đó thực hiện các thao tác chuỗi thô sơ trên đó

if (isset($_SERVER["HTTP_AUTHORIZATION"])) {
	list($type, $data) = explode(" ", $_SERVER["HTTP_AUTHORIZATION"], 2);
	if (strcasecmp($type, "Bearer") == 0) {
		// use $data
	} else {
		// ???
	}
} else {
	// ???
}
Bearer là một phương pháp ủy quyền chưa chính thức mà mọi người đã tạo ra trước đây vì Basic và Digest không hoạt động đủ tốt. Điều đó chỉ có nghĩa là bất kỳ mã thông báo nào xuất hiện sau đó đều là một số mã đặc biệt mà máy chủ sẽ nhận dạng để xác thực - điều thực sự xảy ra với mã đó là tùy thuộc vào bạn

  • Làm cách nào để nhận mã thông báo mang trong PHP?
    1

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

mds1256

Đăng ngày 20 tháng 1 năm 2017

mds1256

  • Làm cách nào để nhận mã thông báo mang trong PHP?

  • Các thành viên
    • 259

  • Tác giả

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017

Lấy nó từ tiêu đề HTTP_AUTHORIZATION trong $_SERVER, sau đó thực hiện các thao tác chuỗi thô sơ trên đó

if (isset($_SERVER["HTTP_AUTHORIZATION"])) {
	list($type, $data) = explode(" ", $_SERVER["HTTP_AUTHORIZATION"], 2);
	if (strcasecmp($type, "Bearer") == 0) {
		// use $data
	} else {
		// ???
	}
} else {
	// ???
}
Bearer là một phương pháp ủy quyền chưa chính thức mà mọi người đã tạo ra trước đây vì Basic và Digest không hoạt động đủ tốt. Điều đó chỉ có nghĩa là bất kỳ mã thông báo nào xuất hiện sau đó đều là một số mã đặc biệt mà máy chủ sẽ nhận dạng để xác thực - điều thực sự xảy ra với mã đó là tùy thuộc vào bạn

 

 

À, tôi hiểu rồi - cảm ơn vì điều này nó làm cho nó rất rõ ràng

 

Tôi biết cách tốt nhất là sử dụng tiêu đề đã tồn tại này nhưng có lý do nào khiến tôi không thể tạo tiêu đề của riêng mình và sử dụng các tiêu đề này, e. g. access_token và refresh_token?

 

Trên một lưu ý hơi khác

 

Nhìn vào Oauth dường như có id ứng dụng khách và bí mật ứng dụng khách được chuyển vào tiêu đề ủy quyền http và sau đó mã thông báo truy cập/làm mới được chuyển vào nội dung bài đăng - lợi thế của việc có id ứng dụng khách và bí mật cũng như

 

Đây có phải là trường hợp kiểm soát 'ứng dụng' nào có thể sử dụng điểm cuối không?

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

Jacques1

Đăng ngày 20 tháng 1 năm 2017

Jacques1

  • Làm cách nào để nhận mã thông báo mang trong PHP?
    Làm cách nào để nhận mã thông báo mang trong PHP?

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017 (đã chỉnh sửa)

Tôi biết cách tốt nhất là sử dụng tiêu đề đã tồn tại này nhưng có lý do nào khiến tôi không thể tạo tiêu đề của riêng mình và sử dụng các tiêu đề này, e. g. access_token và refresh_token?

 

Không có gì ngăn cản bạn tạo các tiêu đề tùy chỉnh, miễn là chúng không xung đột với các tiêu đề hiện có. Việc phát minh ra giao thức của riêng bạn có hợp lý hay không lại là một câu chuyện khác

 

 

 

Nhìn vào Oauth dường như có id ứng dụng khách và bí mật ứng dụng khách được chuyển vào tiêu đề ủy quyền http và sau đó mã thông báo truy cập/làm mới được chuyển vào nội dung bài đăng - lợi thế của việc có id ứng dụng khách và bí mật cũng như

 

Bạn hiểu lầm rồi. Thông tin đăng nhập của khách hàng được trao đổi để lấy mã thông báo truy cập. Bạn gửi thông tin đăng nhập, bạn nhận được mã thông báo. Việc chuyển mã thông báo truy cập trong “nội dung POST” thậm chí không có ý nghĩa gì, bởi vì nó ngụ ý rằng mọi yêu cầu đơn lẻ phải là một yêu cầu POST (còn GET thì sao?)

 

Dù sao đi nữa, tôi nghĩ chúng ta đã thảo luận rất chi tiết về vấn đề này, nhưng dường như không có nhiều tiến triển. Có lẽ sẽ hợp lý hơn nếu bạn ngồi xuống, xác định mục tiêu của mình và sau đó chọn cách thực hiện phù hợp. Nếu bạn ngẫu nhiên xem qua các giao thức và biến thể khác nhau, điều đó chỉ dẫn đến nhiều nhầm lẫn hơn

Đã chỉnh sửa ngày 20 tháng 1 năm 2017 bởi Jacques1

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

mds1256

Đăng ngày 20 tháng 1 năm 2017

mds1256

  • Làm cách nào để nhận mã thông báo mang trong PHP?

  • Các thành viên
    • 259

  • Tác giả

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017

 

Bạn hiểu lầm rồi. Thông tin đăng nhập của khách hàng được trao đổi để lấy mã thông báo truy cập. Bạn gửi thông tin đăng nhập, bạn nhận được mã thông báo. Việc chuyển mã thông báo truy cập trong “nội dung POST” thậm chí không có ý nghĩa gì, bởi vì nó ngụ ý rằng mọi yêu cầu đơn lẻ phải là một yêu cầu POST (còn GET thì sao?)

 

Dù sao đi nữa, tôi nghĩ chúng ta đã thảo luận rất chi tiết về vấn đề này, nhưng dường như không có nhiều tiến triển. Có lẽ sẽ hợp lý hơn nếu bạn ngồi xuống, xác định mục tiêu của mình và sau đó chọn cách thực hiện phù hợp. Nếu bạn ngẫu nhiên xem qua các giao thức và biến thể khác nhau, điều đó chỉ dẫn đến nhiều nhầm lẫn hơn

 

 

Được rồi, máy chủ OAuth2 thử nghiệm mà tôi đã tạo phải có các thông tin sau được cung cấp để cung cấp mã thông báo truy cập

 

1. tiêu đề - Grant_type = mật khẩu

2. tiêu đề - tên người dùng

3. tiêu đề - mật khẩu

4. Tiêu đề ủy quyền - id khách hàng. bí mật khách hàng

 

nếu không nó sẽ không cấp mã thông báo truy cập

 

Vì vậy, điều tôi bối rối là tại sao bạn cần cung cấp tên người dùng và mật khẩu cũng như id khách hàng và bí mật khách hàng?

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

Jacques1

Đăng ngày 20 tháng 1 năm 2017

Jacques1

  • Làm cách nào để nhận mã thông báo mang trong PHP?
    Làm cách nào để nhận mã thông báo mang trong PHP?

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017

Vì OAuth phân biệt giữa ứng dụng khách (ứng dụng) và chủ sở hữu tài nguyên (e. g. một người sử dụng con người). Thông tin đăng nhập của khách hàng xác thực ứng dụng khách, tên người dùng/mật khẩu xác thực người dùng. Xác thực ứng dụng khách không phải lúc nào cũng được yêu cầu theo giao thức, nhưng biến thể cụ thể mà bạn đã chọn hoặc quá trình triển khai vẫn có thể thực thi nó

 

Nhưng sau đó một lần nữa. Hoàn toàn không rõ bạn đang cố gắng đạt được điều gì. Trong các chủ đề trước của bạn, ít nhiều bạn muốn loại bỏ hoàn toàn mật khẩu. Bây giờ có vẻ như bạn chỉ muốn xác thực bằng mật khẩu, điều này sẽ khiến toàn bộ giao thức OAuth trở nên vô dụng

 

Quên về những thứ kỹ thuật bây giờ. Mục tiêu của bạn là gì?

  • Trích dẫn

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

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

mds1256

Đăng ngày 20 tháng 1 năm 2017

mds1256

  • Làm cách nào để nhận mã thông báo mang trong PHP?

  • Các thành viên
    • 259

  • Tác giả

    • Chia sẻ

Đăng ngày 20 tháng 1 năm 2017

Vì OAuth phân biệt giữa ứng dụng khách (ứng dụng) và chủ sở hữu tài nguyên (e. g. một người sử dụng con người). Thông tin đăng nhập của khách hàng xác thực ứng dụng khách, tên người dùng/mật khẩu xác thực người dùng. Xác thực ứng dụng khách không phải lúc nào cũng được yêu cầu theo giao thức, nhưng biến thể cụ thể mà bạn đã chọn hoặc quá trình triển khai vẫn có thể thực thi nó

 

Nhưng sau đó một lần nữa. Hoàn toàn không rõ bạn đang cố gắng đạt được điều gì. Trong các chủ đề trước của bạn, ít nhiều bạn muốn loại bỏ hoàn toàn mật khẩu. Bây giờ có vẻ như bạn chỉ muốn xác thực bằng mật khẩu, điều này sẽ khiến toàn bộ giao thức OAuth trở nên vô dụng

 

Quên về những thứ kỹ thuật bây giờ. Mục tiêu của bạn là gì?

 

Điều đó có ý nghĩa - vì vậy bạn có thể cấm ứng dụng khách nhưng vẫn cho phép người dùng - ví dụ: bạn phát hành hai ứng dụng có thể xác thực bằng cách sử dụng cùng một chi tiết người dùng nhưng sau đó bạn gỡ bỏ một trong các ứng dụng để sau đó bạn xóa id ứng dụng đó khỏi danh sách được phép

 

Mục tiêu là tạo một ứng dụng dành cho thiết bị di động xác thực bằng mặt sau để sử dụng mã thông báo - trước tiên người dùng đăng nhập vào ứng dụng dành cho thiết bị di động bằng tên người dùng và mật khẩu sẽ gửi yêu cầu mã thông báo - máy chủ sẽ phản hồi bằng mã thông báo nếu

 

Phần tôi đang gặp khó khăn là tại sao tôi cần id ứng dụng khách và bí mật cũng như tên người dùng và mật khẩu - nhưng tôi đoán nếu tôi muốn kiểm soát quyền truy cập ứng dụng khách cũng như quyền truy cập của người dùng thì đây là lý do tại sao tôi cần cả hai. Bạn có thể xác nhận rằng suy nghĩ này là chính xác?

Làm cách nào tôi có thể nhận Mã thông báo Bearer trong PHP?

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

Làm cách nào tôi có thể tự động nhận Bearer Token?

Người đưa thư tự động .
Thẻ ủy quyền. Trong Tab ủy quyền, hãy đặt Loại thành Mã thông báo mang và đối với giá trị của Mã thông báo, hãy đặt biến của bạn, tôi đã sử dụng {{BEARERTOKEN}}
Thẻ tập lệnh yêu cầu trước. Trong Tab Tập lệnh yêu cầu trước, đây là nơi điều kỳ diệu xảy ra. .
Yêu cầu thiết lập

Làm cách nào tôi có thể nhận được OAuth 2. 0 Mã thông báo mang?

Lấy OAuth 2. 0 thông tin xác thực từ Google API Console
Nhận mã thông báo truy cập từ Máy chủ ủy quyền của Google
Kiểm tra phạm vi truy cập được cấp bởi người dùng
Gửi mã thông báo truy cập tới API
Làm mới mã thông báo truy cập, nếu cần

Làm cách nào tôi có thể nhận Bearer Token cho tài khoản dịch vụ?

Để nhận mã thông báo Bearer bằng tài khoản dịch vụ của bạn, hãy làm theo các bước sau. .
Cài đặt công cụ dòng lệnh gcloud
Xác thực tài khoản dịch vụ của bạn. Trong lệnh sau, thay thế ${KEY_FILE} bằng đường dẫn đến tệp khóa tài khoản dịch vụ của bạn. .
Sử dụng tài khoản dịch vụ của bạn để nhận mã thông báo ủy quyền