Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Apigee Edge cho phép bạn thực hiện các lệnh gọi API Edge được xác thực bằng mã thông báo OAuth2. Theo mặc định, Edge hỗ trợ OAuth2 cho các tài khoản trên Cloud. Nếu đang sử dụng Edge cho Đám mây riêng, bạn không thể sử dụng OAuth2 nếu chưa thiết lập SAML hoặc LDAP.
Cách hoạt động của OAuth2 (với API Apigee Edge)
Các lệnh gọi đến Apigee Edge API đều yêu cầu xác thực để chúng tôi có thể chắc chắn rằng bạn là người mà bạn nói. Để xác thực bạn, chúng tôi yêu cầu bạn gửi mã truy cập OAuth2 cùng với yêu cầu của mình để truy cập vào API.
Ví dụ: nếu muốn biết thông tin chi tiết về một tổ chức trên Edge, bạn sẽ gửi yêu cầu đến một URL như sau:
https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
Tuy nhiên, bạn không thể chỉ gửi yêu cầu mà không cho chúng tôi biết bạn là ai. Nếu không, bất kỳ ai cũng có thể xem thông tin chi tiết về tổ chức của bạn.
Đây là lúc OAuth2 phát huy tác dụng: để xác thực bạn, chúng tôi cũng cần bạn gửi cho chúng tôi một mã truy cập trong yêu cầu đó. Mã truy cập cho chúng tôi biết danh tính của bạn để chúng tôi có thể chắc chắn rằng bạn được phép xem thông tin chi tiết về tổ chức.
Rất may là bạn có thể nhận được mã thông báo bằng cách gửi thông tin đăng nhập của mình đến dịch vụ Edge OAuth2. Dịch vụ này phản hồi bằng mã truy cập và mã làm mới.
Quy trình OAuth2: Yêu cầu ban đầu
Hình ảnh sau đây minh hoạ quy trình OAuth2 khi bạn truy cập vào Edge API lần đầu tiên:
Như Hình 1 cho thấy, khi bạn đưa ra yêu cầu ban đầu cho Edge API:
- Bạn yêu cầu mã truy cập. Bạn có thể thực hiện việc này bằng Edge API, acurl hoặc
get_token. Ví dụ:get_token Enter username:
ahamilton@apigee.comEnter the password for user 'ahamilton@apigee.com'[hidden input]Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:123456 - Dịch vụ Edge OAuth2 phản hồi bằng mã truy cập và in mã đó vào
stdout; ví dụ:Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0 RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG 420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M 2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw
Các tiện ích
acurlvàget_tokensẽ tự động lưu mã truy cập và mã làm mới vào~/.sso-cli(Mã làm mới không được ghi vàostdout). Nếu sử dụng dịch vụ Edge OAuth2 để lấy mã thông báo, bạn cần tự lưu mã thông báo để sử dụng sau. - Bạn gửi yêu cầu đến Edge API bằng mã truy cập.
acurlsẽ tự động đính kèm mã thông báo; ví dụ:acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
Nếu bạn sử dụng một ứng dụng HTTP khác, hãy nhớ thêm mã truy cập. Ví dụ:
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
- Edge API thực thi yêu cầu của bạn và thường trả về một phản hồi có dữ liệu.
Quy trình OAuth2: Các yêu cầu tiếp theo
Trong các yêu cầu tiếp theo, bạn không cần trao đổi thông tin đăng nhập để lấy mã thông báo. Thay vào đó, bạn chỉ cần thêm mã truy cập mà bạn đã có, miễn là mã này chưa hết hạn:
Như Hình 2 cho thấy, khi bạn đã có mã truy cập:
- Bạn gửi yêu cầu đến Edge API bằng mã truy cập.
acurlsẽ tự động đính kèm mã thông báo. Nếu sử dụng các công cụ khác, bạn cần thêm mã thông báo theo cách thủ công. - Edge API thực thi yêu cầu của bạn và thường trả về một phản hồi có dữ liệu.
Quy trình OAuth2: Khi mã truy cập của bạn hết hạn
Khi mã truy cập hết hạn (sau 12 giờ), bạn có thể dùng mã làm mới để lấy mã truy cập mới:
Như Hình 3 cho thấy, khi mã truy cập của bạn đã hết hạn:
- Bạn gửi yêu cầu đến Edge API, nhưng mã truy cập của bạn đã hết hạn.
- Edge API từ chối yêu cầu của bạn vì không được uỷ quyền.
- Bạn gửi mã làm mới đến dịch vụ Edge OAuth2. Nếu bạn đang sử dụng
acurl, thì quá trình này sẽ tự động diễn ra. - Dịch vụ Edge OAuth2 sẽ phản hồi bằng một mã truy cập mới.
- Bạn gửi một yêu cầu đến Edge API bằng mã truy cập mới.
- Edge API thực thi yêu cầu của bạn và thường trả về một phản hồi có dữ liệu.
Nhận mã thông báo
Để nhận mã truy cập mà bạn có thể gửi đến Edge API, bạn có thể sử dụng các tiện ích Apigee sau, ngoài một tiện ích như curl:
- Tiện ích get_token: Trao đổi thông tin xác thực Apigee của bạn để lấy mã truy cập và mã làm mới mà bạn có thể dùng để gọi Edge API.
- Tiện ích acurl: Cung cấp một trình bao bọc tiện lợi xung quanh lệnh
curltiêu chuẩn. Tạo các yêu cầu HTTP cho Edge API, nhận mã truy cập và mã làm mới từget_token, đồng thời truyền mã truy cập đến Edge API. - Điểm cuối mã thông báo trong dịch vụ Edge OAuth2: Trao đổi thông tin xác thực Apigee để lấy mã truy cập và mã làm mới thông qua lệnh gọi đến Edge API.
Các tiện ích này trao đổi thông tin đăng nhập tài khoản Apigee của bạn (địa chỉ email và mật khẩu) để lấy mã thông báo có thời lượng như sau:
- Mã truy cập sẽ hết hạn sau 12 giờ.
- Mã làm mới sẽ hết hạn sau 30 ngày.
Do đó, sau khi thực hiện thành công một lệnh gọi API bằng acurl hoặc get_token, bạn có thể tiếp tục sử dụng cặp mã thông báo này trong 30 ngày. Sau khi hết hạn, bạn phải nhập lại thông tin đăng nhập và nhận mã thông báo mới.
Truy cập vào Edge API bằng OAuth2
Để truy cập vào Edge API, bạn gửi yêu cầu đến một điểm cuối API và thêm mã truy cập.
Bạn có thể thực hiện việc này bằng bất kỳ ứng dụng HTTP nào, kể cả một tiện ích dòng lệnh như curl, giao diện người dùng dựa trên trình duyệt như Postman hoặc một tiện ích Apigee như acurl.
Việc truy cập vào Edge API bằng acurl và bằng curl được mô tả trong các phần sau.
Sử dụng acurl
Để truy cập vào Edge API bằng acurl, yêu cầu ban đầu của bạn phải bao gồm thông tin đăng nhập. Dịch vụ Edge OAuth2 phản hồi bằng mã truy cập và mã làm mới. acurl lưu mã thông báo trên thiết bị.
Trong các yêu cầu tiếp theo, acurl sẽ sử dụng các mã thông báo đã lưu trong ~/.sso-cli để bạn không phải thêm lại thông tin đăng nhập cho đến khi mã thông báo hết hạn.
Ví dụ sau đây cho thấy một yêu cầu acurl ban đầu để lấy thông tin chi tiết về tổ chức "ahamilton-eval":
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -u ahamilton@apigee.com Enter the password for user 'ahamilton@apigee.com'[hidden input]Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:1a2b3c{ "createdAt" : 1491854501264, "createdBy" : "noreply_iops@apigee.com", "displayName" : "ahamilton", "environments" : [ "prod", "test" ], "lastModifiedAt" : 1491854501264, "lastModifiedBy" : "noreply_iops@apigee.com", "name" : "ahamilton", "properties" : { "property" : [ { "name" : "features.isSmbOrganization", "value" : "false" }, { "name" : "features.isCpsEnabled", "value" : "true" } ] }, "type" : "trial" }acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]
Ngoài việc lấy thông tin chi tiết về tổ chức, ví dụ này cũng cho thấy yêu cầu thứ hai để lấy danh sách các chính sách trong proxy API "helloworld". Yêu cầu thứ hai sử dụng từ viết tắt "o" cho "organizations" (tổ chức) trong URL.
Xin lưu ý rằng acurl sẽ tự động truyền mã truy cập trong yêu cầu thứ hai. Bạn không cần truyền thông tin đăng nhập của người dùng sau khi acurl lưu trữ mã thông báo OAuth2. Thao tác này sẽ lấy mã thông báo từ ~/.sso-cli cho các lệnh gọi tiếp theo.
Để biết thêm thông tin, hãy xem bài viết Sử dụng acurl để truy cập vào Edge API.
Sử dụng curl
Bạn có thể dùng curl để truy cập vào Edge API. Để làm việc này, trước tiên, bạn phải lấy mã truy cập và mã làm mới. Bạn có thể lấy các thông tin này bằng một tiện ích như get_token hoặc dịch vụ Edge OAuth2..
Sau khi lưu thành công mã truy cập, bạn sẽ truyền mã này vào tiêu đề Authorization của các lệnh gọi đến Edge API, như ví dụ sau đây cho thấy:
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
Mã truy cập có hiệu lực trong 12 giờ kể từ khi được cấp. Sau khi mã truy cập hết hạn, bạn có thể dùng mã làm mới trong 30 ngày để cấp một mã truy cập khác mà không cần thông tin đăng nhập. Apigee đề xuất chỉ yêu cầu mã truy cập mới sau khi mã làm mới hết hạn, thay vì nhập thông tin đăng nhập và đưa ra yêu cầu mới với mỗi lệnh gọi API.
Thời hạn của mã thông báo
Sau khi mã truy cập hết hạn, bạn có thể sử dụng mã làm mới để lấy mã truy cập mới mà không cần gửi lại thông tin đăng nhập.
Cách làm mới mã truy cập tuỳ thuộc vào công cụ bạn đang sử dụng:
acurl: Bạn không cần làm gì cả.acurlsẽ tự động làm mới mã truy cập khi bạn gửi một yêu cầu có chứa mã truy cập đã lỗi thời.get_token: Gọiget_tokenđể làm mới mã truy cập.- Dịch vụ Edge OAuth2: Gửi một yêu cầu bao gồm:
- Mã làm mới
- Tham số biểu mẫu
grant_typeđược đặt thành "refresh_token"
OAuth2 cho người dùng máy
Bạn có thể dùng các tiện ích acurl và get_token để tạo tập lệnh truy cập tự động vào Edge API bằng phương thức xác thực OAuth2 cho người dùng máy. Ví dụ sau đây cho biết cách sử dụng get_token để yêu cầu mã truy cập, sau đó thêm giá trị mã thông báo vào lệnh gọi curl:
USER=me@example.comPASS=not-that-secretTOKEN=$(get_token -u $USER:$PASS -m '')curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'
Ngoài ra, bạn có thể kết hợp yêu cầu mã thông báo và lệnh gọi curl bằng tiện ích acurl.
Ví dụ:
USER=me@example.comPASS=not-that-secretacurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
Trong cả hai ví dụ, việc đặt giá trị của -m thành một chuỗi trống sẽ ngăn người dùng máy được nhắc nhập mã MFA.