Triển khai kiểu cấp mật khẩu

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

Loại cấp quyền sử dụng mật khẩu của chủ sở hữu tài nguyên (hay "mật khẩu") chủ yếu đượ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 xác thực máy chủ tài nguyên của họ (tên người dùng/mật khẩu) cho ứng dụng khách. Sau đó, ứng dụng sẽ gửi thông tin xác thực đó qua một yêu cầu mã truy cập đến Apigee Edge. Máy chủ nhận dạng sẽ xác thực thông tin đăng nhập và nếu thông tin này hợp lệ, Edge sẽ tiếp tục đúc một mã truy cập và trả lại mã đó cho ứng dụng.

Giới thiệu về chủ đề này

Chủ đề này đưa ra nội dung mô tả chung và thông tin tổng quan về quy trình cấp mật khẩu của chủ sở hữu tài nguyên OAuth 2.0, đồng thời thảo luận cách triển khai quy trình này trên Apigee Edge.

Các ví dụ có thể giúp ích cho bạn

  • Yêu cầu mã truy cập: Loại cấp mật khẩu: Hướng dẫn bạn 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 điểm cuối cho chính sách trong Edge.
  • OAuth-validate-key-secret: Một proxy mẫu trong 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 về cơ chế cấp mật khẩu. Hướng dẫn này minh hoạ phương pháp hay nhất, đó là xác thực thông tin xác thực của ứng dụng khách (khoá/bí mật) trước khi gửi thông tin xác thực của người dùng cho 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 quyền này dành cho các ứng dụng có đặc quyền hoặc ứng dụng có độ tin cậy cao vì người dùng bắt buộc phải cung cấp thông tin xác thực máy chủ tài nguyên cho ứng dụng. Thông thường, ứng dụng sẽ cung cấp màn hình đăng nhập để người dùng nhập thông tin đăng nhập.

Sơ đồ quy trình

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, trong đó quá trình Apigee sẽ đóng vai trò là máy chủ uỷ quyền.

Mẹo: Để xem phiên bản lớn hơn của sơ đồ này, hãy nhấp chuột phải vào biểu đồ rồi mở trong một thẻ mới, hoặc lưu và mở trong một trình xem hình ảnh.

Các bước trong quy trình cấp kiểu cấp mật khẩu

Sau đây là phần tóm tắt các bước cần thực hiện để triển khai hình thức cấp mật khẩu mà trong đó Apigee Edge đóng vai trò là máy chủ uỷ quyền.

Điều kiện tiên quyết: Bạn phải đăng ký ứng dụng khách với Apigee Edge để có được mã ứng dụng khách và khoá bí mật của ứng dụng. Vui lòng 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 đăng nhập

Khi ứng dụng cần truy cập vào 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 về mã truy cập (bao gồm cả thông tin xác thực của người dùng) đến một điểm cuối GenerateAccessToken trên Apigee Edge.

Dưới đây là yêu cầu POST mẫu, bao gồm các tham số bắt buộc cho loại 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, sử dụng tuỳ chọn -u để curl nhằm 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 cùng một dòng.)

Thông tin đăng nhập của người dùng được chứa trong thông số biểu mẫu, trong khi thông tin đăng nhập ứng dụng được mã hoá trong tiêu đề xác thực cơ bản 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 đề Xác thực cơ bản bắt buộc, hãy xem phần cấp mật khẩu trong phần "Yêu cầu mã truy cập và mã uỷ quyền".

3. Edge xác thực ứng dụng

Trước khi gửi tên người dùng và mật khẩu của người dùng đến nhà cung cấp danh tính, Edge cần biết rằng ứng dụng khách gửi yêu cầu là một ứng dụng hợp lệ và đáng tin cậy. Có 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á ứng dụng và khoá bí mật. Có một proxy mẫu minh hoạ kỹ thuật lồng ghép 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 ứng dụng khách được xác thực, bạn có thể sử dụng Chính sách chú thích dịch vụ hoặc chính sách JavaScript để gọi dịch vụ nhận dạng bằng cách gửi thông tin xác thực 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 sử dụng để xác thực thông tin xác thực. Để biết thông tin chi tiết về những chính sách này, vui lòng xem chính sách Trích xuất biếnchính sách về JavaScript.

Nếu dịch vụ nhận dạng xác thực thông tin xác thực 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ẽ ngừng xử lý và trả về lỗi cho ứng dụng.

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 chính sách OAuthV2 được định cấu hình cho loại cấp mật khẩu. Dưới đây là một ví dụ. Các phần tử <UserName> và <PassWord> là bắt buộc và bạn có thể truy xuất các phần tử này từ các biến luồng đã 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, hệ thống sẽ tạo một phản hồi chứa mã truy cập cho ứng dụng. Phản hồi có đị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, khi có mã truy cập hợp lệ, ứng dụng có thể thực hiện lệnh gọi đến API được bảo vệ. Trong trường hợp này, các yêu cầu sẽ được gửi đến Apigee Edge (máy chủ proxy) và Edge sẽ 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 chuyển vào tiêu đề Uỷ quyền. Ví dụ:

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