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
Loại cấp quyền mật khẩu của chủ sở hữu tài nguyên (hoặc "mật khẩu") thường được dùng trong trường hợp ứng dụng được tin cậy cao. Trong cấu hình này, người dùng cung cấp thông tin đăng nhập máy chủ tài nguyên (tên người dùng/mật khẩu) cho ứng dụng khách. Ứng dụng này sẽ gửi thông tin đăng nhập trong yêu cầu mã truy cập đến Apigee Edge. Một máy chủ nhận dạng sẽ xác thực thông tin đăng nhập và nếu thông tin đó hợp lệ, Edge sẽ tiến hành tạo mã truy cập rồi trả mã đó về cho ứng dụng.
Giới thiệu về chủ đề này
Chủ đề này cung cấp nội dung mô tả và thông tin tổng quan chung về quy trình cấp mật khẩu cho chủ sở hữu tài nguyên OAuth 2.0, đồng thời thảo luận về cách triển khai quy trình này trên Apigee Edge.
Ví dụ có thể hữu ích cho bạn
- Yêu cầu mã truy cập: Loại cấp mật khẩu: Cho biết cách tạo yêu cầu mã thông báo, định cấu hình chính sách OAuthV2 cho loại cấp mật khẩu và cách định cấu hình một điểm cuối cho chính sách trong Edge.
- oauth-validate-key-secret: Một proxy mẫu trên GitHub mà bạn có thể triển khai cho Edge và dùng thử. Đây là một ví dụ toàn diện có tính năng loại cấp mật khẩu. Thao tác này minh hoạ một phương pháp hay nhất, đó là xác thực thông tin đăng nhập (khoá/mật khẩu) của ứng dụng khách trước khi gửi thông tin đăng nhập của người dùng đến một nhà cung cấp danh tính.
Video
Video: Xem video này về cách triển khai loại cấp mật khẩu.
Trường hợp sử dụng
Loại cấp quyền này dành cho các ứng dụng có độ tin cậy cao hoặc có đặc quyền vì người dùng phải cung cấp thông tin đăng nhập máy chủ tài nguyên cho ứng dụng. Thông thường, ứng dụng sẽ cung cấp một màn hình đăng nhập nơi người dùng nhập thông tin đăng nhập của họ.
Sơ đồ luồng
Sơ đồ quy trình sau đây minh hoạ quy trình cấp mật khẩu của chủ sở hữu tài nguyên với Apigee Edge đóng vai trò là máy chủ uỷ quyền.
Lưu ý: Để xem phiên bản lớn hơn của sơ đồ này, hãy nhấp chuột phải vào sơ đồ rồi mở trong một thẻ mới hoặc lưu sơ đồ rồi mở trong một trình xem hình ảnh.

Các bước trong quy trình cấp mật khẩu
Sau đây là bản tóm tắt các bước cần thiết để triển khai loại cấp mật khẩu trong đó Apigee Edge đóng vai trò là máy chủ uỷ quyền.
Điều kiện tiên quyết: Ứng dụng khách phải được đăng ký với Apigee Edge để lấy mã ứng dụng và khoá bí mật của ứng dụng khách. Hãy xem phần Đăng ký ứng dụng khách để biết thông tin chi tiết.
1. Người dùng bắt đầu quy trình và nhập thông tin xác thực
Khi ứng dụng cần truy cập vào các tài nguyên được bảo vệ của người dùng (ví dụ: người dùng nhấp vào một nút trong ứng dụng), người dùng sẽ được chuyển hướng đến một biểu mẫu đăng nhập.
2. Ứng dụng yêu cầu mã truy cập từ Apigee Edge
Ứng dụng gửi một yêu cầu mã truy cập, bao gồm cả thông tin đăng nhập của người dùng, đến một điểm cuối GenerateAccessToken trên Apigee Edge.
Sau đây là một yêu cầu POST mẫu, bao gồm các thông số bắt buộc cho loại cấp quyền này:
$ curl -i \ -X POST \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -d 'grant_type=password&username=the-user-name&password=the-users-password' \ https://docs-test.apigee.net/oauth/token
Ngoài ra, bạn có thể thực hiện lệnh đó như sau, bằng cách dùng tuỳ chọn -u để curl tạo tiêu đề Xác thực cơ bản được mã hoá base64 cho bạn.
$ curl -i \ -X POST \ -H 'Content-Type: application/x-www-form-urlencoded' \ -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \ -d 'grant_type=password&username=the-user-name&password=the-users-password' \ https://docs-test.apigee.net/oauth/token
(Mỗi lệnh trong số đó phải nằm trên một dòng.)
Thông tin đăng nhập của người dùng có trong các tham số biểu mẫu, trong khi thông tin đăng nhập của ứng dụng được mã hoá trong tiêu đề xác thực cơ bản của HTTP. Để biết nội dung mô tả chi tiết về lệnh gọi API này, bao gồm cả thông tin chi tiết về tiêu đề Basic Auth bắt buộc, hãy xem phần cấp mật khẩu của "Yêu cầu mã truy cập và mã uỷ quyền".
3. Edge xác thực ứng dụng khách
Trước khi gửi tên người dùng và mật khẩu của người dùng cho một nhà cung cấp danh tính, Edge cần biết rằng ứng dụng khách đưa ra yêu cầu là một ứng dụng hợp lệ và đáng tin cậy. Một cách để thực hiện việc này là sử dụng phương thức xác thực khoá API trong lệnh gọi API. Trong một số trường hợp, bạn có thể muốn xác thực cả khoá và mật khẩu ứng dụng khách. Có một proxy mẫu minh hoạ kỹ thuật thay thế này trong kho lưu trữ api-platform-samples trên GitHub.
4. Edge xử lý thông tin đăng nhập
Sau khi xác thực ứng dụng khách, bạn có thể sử dụng chính sách Lời gọi dịch vụ hoặc JavaScript để gọi dịch vụ nhận dạng, gửi thông tin đăng nhập của người dùng. Ví dụ: đó có thể là một dịch vụ LDAP hoặc bất kỳ dịch vụ nào mà bạn muốn dùng để xác thực thông tin đăng nhập. Để biết thông tin chi tiết về các chính sách này, hãy xem chính sách Trích xuất biến và chính sách JavaScript.
Nếu dịch vụ nhận dạng xác thực thông tin đăng nhập và trả về phản hồi 200, thì Edge sẽ tiếp tục xử lý yêu cầu; nếu không, Edge sẽ dừng xử lý và trả về lỗi cho ứng dụng khách.
5. Chính sách OAuthV2 thực thi
Nếu thông tin đăng nhập hợp lệ, bước xử lý tiếp theo là thực thi một chính sách OAuthV2 được định cấu hình cho loại cấp mật khẩu. Sau đây là một ví dụ. Bạn phải có các phần tử <UserName> và <PassWord> và bạn có thể truy xuất các phần tử này từ các biến luồng được lưu bằng chính sách ExtractVariables. Để biết thông tin tham khảo chi tiết về chính sách này, hãy xem chính sách OAuthV2.
<OAuthV2 name="GetAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>360000000</ExpiresIn> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <UserName>login</UserName> <PassWord>password</PassWord> <GenerateResponse/> </OAuthV2>
Nếu chính sách này thành công, một phản hồi sẽ được tạo cho máy khách chứa mã thông báo truy cập. Phản hồi ở định dạng JSON. Dưới đây là một ví dụ. Xin lưu ý rằng access_token là một trong các phần tử:
{ "issued_at": "1420258685042", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420258685042", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6", "organization_name": "docs", "refresh_token_expires_in": "0", "refresh_count": "0" }
6. Ứng dụng gọi API được bảo vệ
Giờ đây, với mã truy cập hợp lệ, ứng dụng có thể gọi đến API được bảo vệ. Trong trường hợp này, các yêu cầu được gửi đến Apigee Edge (proxy) và Edge chịu trách nhiệm xác thực mã truy cập trước khi chuyển lệnh gọi API đến máy chủ tài nguyên đích. Mã truy cập được truyền trong tiêu đề Uỷ quyền. Ví dụ:
$ curl -H "Authorization: Bearer I6daIgMSiUgYX1K2qgQWPi37ztS6 " http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282