OAuth

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

OAuth đã nổi lên như giao thức uỷ quyền hàng đầu cho API. Phiên bản của OAuth được đề cập chi tiết trong chủ đề này được xác định trong OAuth 2.0 Quy cách.

OAuth là một giao thức cho phép người dùng cuối của ứng dụng uỷ quyền ứng dụng để hành động thay mặt cho người dùng. Ứng dụng làm như vậy bằng cách có được quyền truy cập mã thông báo từ nhà cung cấp API. Nhà cung cấp API xác thực phía cuối ứng dụng thông tin đăng nhập của người dùng, đảm bảo rằng người dùng đã uỷ quyền cho ứng dụng, sau đó cấp mã truy cập cho ứng dụng. Khi ứng dụng sử dụng một API được bảo vệ, Apigee Edge sẽ kiểm tra mã truy cập để đảm bảo rằng đây là mã hợp lệ và chưa hết hạn. Là một nhà cung cấp API, bạn cần hiển thị các điểm cuối cho phép ứng dụng nhận mã truy cập.

Để giúp bạn dễ dàng bắt đầu sử dụng OAuth, Apigee Edge cho phép bạn định cấu hình và thực thi OAuth bằng các chính sáchmà không yêu cầu bạn viết bất kỳ mã nào. Trong chủ đề này, bạn sẽ tìm hiểu cách bảo vệ các API của mình cũng như cách để có được quyền truy cập và cách dùng những mã truy cập đó để truy cập vào API được bảo vệ.

Cấu hình OAuth mặc định cho tổ chức

Để thuận tiện, mọi tổ chức sử dụng Apigee Edge đều được thiết lập sẵn một bộ OAuth 2.0 các điểm cuối triển khai loại cấp thông tin đăng nhập ứng dụng. Khách hàng loại cấp thông tin xác thực xác định quy trình cấp mã truy cập để đổi lấy ứng dụng thông tin xác thực. Các thông tin đăng nhập ứng dụng này chỉ đơn giản là cặp khoá bảo mật và khoá người dùng Các vấn đề về Apigee Edge đối với từng ứng dụng đã đăng ký trong một tổ chức. "Thông tin đăng nhập của ứng dụng khách" đề cập đến chính cặp khoá người dùng và khoá bí mật.

Để tìm hiểu thêm về cách cấp thông tin đăng nhập cho các ứng dụng sử dụng Dịch vụ dành cho nhà phát triển Edge, hãy xem Đăng ký ứng dụng và quản lý khoá.

Vì lý do này, việc 'tăng' tương đối đơn giản lược đồ bảo mật API của bạn từ khoá API xác thực thông tin xác thực ứng dụng OAuth. Cả hai giao thức đều sử dụng cùng một khoá và bí mật người dùng để xác thực ứng dụng. Điểm khác biệt là thông tin xác thực ứng dụng cung cấp thêm một lớp quyền kiểm soát, vì bạn có thể dễ dàng thu hồi mã truy cập khi cần mà không cần phải thu hồi khoá người dùng của ứng dụng. Để làm việc với các điểm cuối OAuth mặc định, bạn có thể sử dụng bất kỳ khoá nào của người dùng và khoá bí mật được tạo cho ứng dụng trong tổ chức của bạn để truy xuất mã truy cập từ mã thông báo điểm cuối. (Bạn thậm chí có thể bật thông tin đăng nhập ứng dụng cho các ứng dụng đã có khoá của người dùng và secrets.)

Bạn có thể xem thông số kỹ thuật đầy đủ cho trạng thái cấp thông tin đăng nhập của ứng dụng trong OAuth 2.0 Thông số kỹ thuật.

Bảo vệ API của bạn bằng chính sách

Trước khi có thể dùng mã truy cập, bạn cần định cấu hình các API của mình để xác thực quyền truy cập OAuth mã thông báo trong thời gian chạy. Để thực hiện việc này, bạn hãy định cấu hình proxy API để xác thực mã truy cập. Điều này có nghĩa là mỗi lần một ứng dụng đưa ra yêu cầu sử dụng một trong các API của bạn, ứng dụng phải hiển thị mã truy cập hợp lệ cùng với yêu cầu API. Apigee Edge xử lý những vấn đề phức tạp liên quan đến việc tạo, lưu trữ và xác thực mã truy cập được trình bày.

Bạn có thể dễ dàng thêm phương thức xác minh OAuth vào một API khi tạo proxy API mới. Khi tạo proxy API mới, bạn có thể Thêm tính năng. Như được hiển thị bên dưới, bạn có thể thêm xác minh mã truy cập OAuth 2.0 bằng cách chọn nút chọn bên cạnh mục Bảo mật bằng Mã truy cập OAuth v2.0. Khi bạn chọn tuỳ chọn này, hai chính sách sẽ được đính kèm vào proxy API mới tạo, một chính sách để xác minh mã truy cập và một để xoá mã truy cập sau khi xác minh xong.

Ngoài ra, khi bạn chọn tuỳ chọn Bảo mật bằng mã truy cập OAuth v2.0, hộp đánh dấu Publish API Product (Xuất bản sản phẩm API) sẽ có thể chọn và tự động đã chọn. Đánh dấu vào đây nếu bạn muốn tự động tạo một sản phẩm khi xây dựng API mới proxy. Sản phẩm được tạo tự động sẽ được tạo bằng mối liên kết với proxy API mới. Nếu bạn bạn hiện có một sản phẩm mà bạn muốn liên kết với API mới này, hãy nhớ xóa để bạn không tạo ra sản phẩm không cần thiết. Để biết thông tin về sản phẩm, hãy xem Sản phẩm API là gì?

Trường hợp bạn cần bật tính năng xác minh mã truy cập cho proxy API đã tồn tại, bạn chỉ cần đính kèm chính sách thuộc loại OAuthV2 vào API mà bạn muốn bảo vệ. Chính sách OAuthV2 hoạt động bằng cách chỉ định một phép toán. Nếu bạn muốn để xác thực mã truy cập, hãy chỉ định thao tác có tên là VerifyAccessToken. (Các loại thao tác khác được loại chính sách OAuthV2 hỗ trợ là GenerateAccessToken và GenerateRefreshToken. Bạn sẽ tìm hiểu về các thao tác đó khi thiết lập điểm cuối của OAuth.)

Chính sách Xác minh OAuthTokens thuộc loại OAuthV2

Chính sách mẫu để xác thực mã truy cập có dạng như sau. (Các chế độ cài đặt là được giải thích trong bảng bên dưới).

<OAuthV2 name="VerifyOAuthTokens"> 
  <Operation>VerifyAccessToken</Operation> 
</OAuthV2>

Cài đặt chính sách

Tên Mô tả Mặc định Bắt buộc?
OAuthV2 Loại chính sách
name Tên của chính sách được tham chiếu trong Điểm cuối proxy API . Không áp dụng
Operation Thao tác sẽ được thực thi bằng chính sách OAuthV2. Bằng cách chỉ định VerifyAccessToken, bạn định cấu hình chính sách để kiểm tra các yêu cầu về mã truy cập và để xác minh rằng quyền truy cập mã thông báo hợp lệ, chưa hết hạn và được phê duyệt để sử dụng tài nguyên API được yêu cầu (URI). (Để kiểm tra, chính sách sẽ đọc sản phẩm API mà ứng dụng được phê duyệt consume.) Không áp dụng

Để tạo chính sách này trong giao diện người dùng quản lý, hãy chuyển đến API > API Proxy.

Trong danh sách proxy API, hãy chọn Weatherapi.

Trong phần Overview (Tổng quan) cho Weatherapi, hãy chọn nút Develop chế độ xem.

Từ trình đơn thả xuống, hãy chọn Chính sách mới > OAuth phiên bản 2.0

Sau khi bạn chọn chính sách OAuth phiên bản 2.0, trình đơn cấu hình Chính sách mới sẽ hiển thị.

Đặt tên mô tả cho chính sách của bạn và nhớ chọn Đính kèm chính sách. Flow PreFlowRequest là chế độ cài đặt tệp đính kèm theo chính sách.

Chọn Thêm, sau đó, chính sách sẽ được tạo và đính kèm vào yêu cầu của weatherapi PreFlow.

Sau khi bạn thêm chính sách, cấu hình yêu cầu PreFlow bên dưới sẽ hiển thị trong phần Ngăn Designer (Nhà thiết kế).

Nếu đang làm việc trên một trình chỉnh sửa văn bản hoặc IDE, bạn sẽ đính kèm Chính sách đối với yêu cầu PreFlow của proxy API mà bạn muốn bảo vệ:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthTokens</Name></Step>
  </Request>
</PreFlow>

Bằng cách đính kèm chính sách này vào yêu cầu PreFlow, bạn đảm bảo rằng chính sách này luôn được thực thi trên tất cả các thông báo yêu cầu.

Giờ đây, bạn đã bảo mật API bằng thông tin đăng nhập ứng dụng OAuth 2.0. Bước tiếp theo là tìm hiểu cách để lấy mã truy cập rồi dùng mã đó để truy cập API bảo mật.

Sử dụng mã truy cập để truy cập vào dữ liệu được bảo vệ tài nguyên

Giờ đây Weatherapi được bảo mật bằng OAuth 2.0, các ứng dụng phải hiển thị mã truy cập để sử dụng API. Để truy cập vào tài nguyên được bảo vệ, ứng dụng sẽ đưa ra mã truy cập trong yêu cầu dưới dạng một mã "Uỷ quyền" tiêu đề HTTP như sau:

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Vì API có đính kèm chính sách OAuthV2 nên Apigee Edge sẽ xác minh mã truy cập trình bày là hợp lệ, rồi cấp quyền truy cập vào API, trả về báo cáo thời tiết cho ứng dụng đã thực hiện yêu cầu đó.

Nhưng làm cách nào để ứng dụng nhận được mã truy cập? Chúng tôi sẽ đề cập đến vấn đề đó trong phần tiếp theo.

Cách trao đổi thông tin đăng nhập của khách hàng cho mã truy cập

Các ứng dụng lấy mã truy cập bằng cách hiện cặp khoá/bí mật của người dùng cho mã thông báo điểm cuối. Điểm cuối của mã thông báo được định cấu hình trong proxy API có tên là OAuth. Vì vậy, các ứng dụng cần gọi API mà API oauth hiển thị proxy để nhận mã truy cập. Sau khi có mã truy cập, ứng dụng có thể gọi weatherapi cho đến khi mã truy cập hết hạn hoặc mã truy cập bị thu hồi.

Giờ đây, bạn cần thay đổi cách nhìn nhận bản thân là một nhà phát triển ứng dụng. Bạn muốn gọi Weatherapi, vì vậy, bạn cần có mã truy cập cho ứng dụng. Việc đầu tiên bạn cần làm là lấy cặp khoá người dùng và khoá bí mật (còn được gọi là API hoặc khoá ứng dụng).

Bạn có thể nhận được khoá và thông tin bí mật cho người tiêu dùng bằng cách đăng ký một ứng dụng trong tổ chức của bạn trên Apigee Cạnh.

Bạn có thể xem tất cả ứng dụng trong tổ chức của mình trong giao diện quản lý của Apigee Edge.

Danh sách ứng dụng được đăng ký trong tổ chức của bạn sẽ xuất hiện.

(Nếu không có ứng dụng nào hiển thị, bạn có thể tìm hiểu cách đăng ký ứng dụng trong chủ đề có tên là Đăng ký ứng dụng và quản lý API khoá.)

Chọn một ứng dụng trong danh sách để xem hồ sơ chi tiết.

Trong chế độ xem chi tiết cho ứng dụng bạn đã chọn, hãy lưu ý các trường cho Khoá người dùngBí mật người dùng. Hai giá trị này là ứng dụng khách thông tin xác thực mà bạn sẽ dùng để lấy mã truy cập OAuth.

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \
-u myname:mypass 

Lệnh gọi này trả về danh sách ứng dụng theo mã ứng dụng.

[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]

Bạn có thể truy xuất hồ sơ của ứng dụng bằng cách thực hiện một lệnh gọi GET đơn giản trên ID ứng dụng:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u myname:mypass 

Ví dụ:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \
-u myname:mypass 

Lệnh gọi API trả về hồ sơ của ứng dụng mà bạn đã chỉ định. Ví dụ: hồ sơ ứng dụng cho Weatherapp có cách biểu diễn JSON sau:

{
  "accessType" : "read",
  "apiProducts" : [ ],
  "appFamily" : "default",
  "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db",
  "attributes" : [ ],
  "callbackUrl" : "http://weatherapp.com",
  "createdAt" : 1380290158713,
  "createdBy" : "noreply_admin@apigee.com",
  "credentials" : [ {
    "apiProducts" : [ {
      "apiproduct" : "PremiumWeatherAPI",
      "status" : "approved"
    } ],
    "attributes" : [ ],
    "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
    "consumerSecret" : "hAr4Gn0gA9vAyvI4",
    "expiresAt" : -1,
    "issuedAt" : 1380290161417,
    "scopes" : [ ],
    "status" : "approved"
  } ],
  "developerId" : "5w95xGkpnjzJDBT4",
  "lastModifiedAt" : 1380290158713,
  "lastModifiedBy" : "noreply_admin@apigee.com",
  "name" : "weatherapp",
  "scopes" : [ ],
  "status" : "approved"
}

Hãy lưu ý giá trị của consumerKeyconsumerSecret. Bạn sử dụng thông tin xác thực để lấy mã thông báo truy cập bằng cách cung cấp thông tin đó dưới dạng thông tin xác thực Xác thực cơ bản trong một yêu cầu HTTP như minh hoạ dưới đây. Loại quyền được biểu thị dưới dạng tham số truy vấn cho yêu cầu. (Hãy nhớ thay đổi giá trị của biến {org_name} để thể hiện tên tổ chức của bạn trên Apigee Edge.)

Tạo yêu cầu lấy mã truy cập

Trong yêu cầu sau, hãy thay giá trị consumerKey vào client_id Thay thế giá trị của consumerSecret được liên kết cho client_secret

$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

Dịch vụ API xác minh khoá và thông tin bí mật của người dùng, sau đó tạo một phản hồi có chứa mã truy cập cho ứng dụng này:

{
  "issued_at" : "1380892555397",
  "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[oauth-test]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
  "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z",
  "organization_name" : "rqa",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

Hãy lưu ý giá trị access_token trong phản hồi ở trên. Đây là mã truy cập ứng dụng sẽ dùng để truy cập trong thời gian chạy vào các tài nguyên được bảo vệ. Mã truy cập của ứng dụng này là ylSkZIjbdWybfs4fUQe9BqP0LH5Z.

Bạn hiện đã có mã truy cập hợp lệ, ylSkZIjbdWybfs4fUQe9BqP0LH5Z, có thể dùng được để truy cập vào các API được bảo vệ.

Làm việc với cấu hình OAuth mặc định

Mỗi tổ chức (kể cả tổ chức dùng thử miễn phí) trên Apigee Edge đều được cấp phép bằng mã thông báo OAuth điểm cuối. Điểm cuối được định cấu hình sẵn bằng các chính sách trong proxy API được gọi là OAuth. Bạn có thể bắt đầu sử dụng điểm cuối mã thông báo ngay khi tạo tài khoản trên Apigee Edge.

Điểm cuối OAuth mặc định sẽ hiển thị URI điểm cuối sau:

/oauth/client_credential/accesstoken

Xuất bản URI này cho những nhà phát triển cần lấy mã truy cập. Nhà phát triển ứng dụng định cấu hình ứng dụng của họ để gọi điểm cuối này, trình bày các cặp khoá người dùng và cặp bí mật để có quyền truy cập mã thông báo.

Điểm cuối mã xác thực thông tin đăng nhập mặc định của ứng dụng sẽ được tiết lộ qua mạng tại điểm cuối URL:

https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken

Ví dụ: nếu tên tổ chức của bạn là "apimaker", URL sẽ là:

https://apimakers-test.apigee.net/oauth/client_credential/accesstoken

Đây là URL mà nhà phát triển gọi để lấy mã truy cập.

Cấu hình OAuth mạng-máy chủ-người dùng

Cấu hình OAuth ba bên (mã uỷ quyền, cấp quyền ngầm ẩn và mật khẩu ) yêu cầu bạn (với tư cách là nhà cung cấp API) xác thực người dùng cuối của ứng dụng. Vì mỗi tổ chức xác thực người dùng theo nhiều cách khác nhau, bạn bắt buộc phải tuỳ chỉnh chính sách hoặc sử dụng mã để tích hợp OAuth với cửa hàng của người dùng. Ví dụ: tất cả người dùng của bạn có thể được lưu trữ trong mục Đang hoạt động Thư mục, trong LDAP hoặc một số cửa hàng người dùng khác. Để thiết lập và chạy OAuth ba bên, bạn cần tích hợp hoạt động kiểm tra cửa hàng người dùng này vào quy trình OAuth tổng thể.

OAuth 1.0a

Để biết chi tiết về chính sách OAuth 1.0a, hãy xem Chính sách OAuth v1.0a.

Nhận trợ giúp

Để được trợ giúp, hãy xem Apigee Hỗ trợ khách hàng.