Sử dụng một nhà cung cấp danh tính (IDP) bên ngoài với API quản lý Edge

Xác thực cơ bản là một cách để xác thực khi thực hiện lệnh gọi đến API Quản lý cạnh. Ví dụ: bạn có thể gửi yêu cầu curl sau đây cho API Quản lý Edge để truy cập vào thông tin về tổ chức của mình:

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Trong ví dụ này, bạn sử dụng tuỳ chọn curl -u để chuyển thông tin xác thực cơ bản. Ngoài ra, bạn có thể truyền một mã thông báo OAuth2 trong tiêu đề Bearer để thực hiện lệnh gọi API Quản lý Edge, như trong ví dụ sau:

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Sau khi bật IDP bên ngoài để xác thực, bạn có thể tuỳ ý tắt phương thức xác thực Cơ bản. Nếu bạn tắt tính năng Xác thực cơ bản, thì tất cả tập lệnh (chẳng hạn như Maven, shell và apigeetool) dựa vào các lệnh gọi API quản lý Edge hỗ trợ phương thức Xác thực cơ bản sẽ không còn hoạt động nữa. Bạn phải cập nhật mọi lệnh gọi API và tập lệnh sử dụng phương thức Xác thực cơ bản để chuyển mã truy cập OAuth2 trong tiêu đề Bearer.

Lấy và làm mới mã thông báo bằng get_token

Tiện ích get_token sẽ trao đổi thông tin xác thực cơ bản của bạn (và trong một số trường hợp là mật mã) để lấy mã truy cập và mã làm mới OAuth2. Tiện ích get_token chấp nhận thông tin đăng nhập của bạn và trả về một mã truy cập hợp lệ. Nếu có thể làm mới mã thông báo, tiện ích sẽ làm mới và trả về mã đó. Nếu mã làm mới hết hạn, mã sẽ nhắc cung cấp thông tin đăng nhập của người dùng.

Tiện ích get_token lưu trữ các mã thông báo trên ổ đĩa để bạn có thể sử dụng khi cần. Phương thức này cũng in mã truy cập hợp lệ tới stdout. Từ đó, bạn có thể sử dụng một tiện ích của trình duyệt như Postman hoặc nhúng tiện ích đó vào một biến môi trường để sử dụng trong curl.

Cách lấy mã truy cập OAuth2 để thực hiện lệnh gọi API Quản lý Edge:

  1. Tải gói sso-cli xuống:
    curl http://EDGE_SSO_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    Trong đó EDGE_SSO_IP_DNS là địa chỉ IP hoặc tên DNS của máy lưu trữ mô-đun SSO của Apigee. Nếu bạn đã định cấu hình TLS cho tính năng Đăng nhập một lần (SSO) của Apigee, hãy sử dụng https và số cổng TLS chính xác.

  2. Giải nén gói ssocli-bundle.zip như trong ví dụ sau:
    unzip ssocli-bundle.zip
  3. Cài đặt get_token trong /usr/local/bin, như ví dụ dưới đây cho thấy:
    ./install -b PATH

    Tuỳ chọn -b chỉ định một vị trí khác.

  4. Đặt biến môi trường SSO_LOGIN_URL thành URL đăng nhập của bạn, có dạng sau đây:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    Trong đó EDGE_SSO_IP_DNS là địa chỉ IP của máy đang lưu trữ mô-đun SSO của Apigee. Nếu bạn đã định cấu hình TLS cho tính năng Đăng nhập một lần (SSO) của Apigee, hãy sử dụng https và đúng số cổng TLS.

  5. (Chỉ SAML) Trong trình duyệt, hãy chuyển đến URL sau để lấy mật mã dùng một lần:
    http://EDGE_SSO_IP_DNS:9099/passcode

    Nếu bạn đã định cấu hình TLS cho tính năng Đăng nhập một lần (SSO) của Apigee, hãy sử dụng https và đúng số cổng TLS.

    Yêu cầu này trả về mật mã một lần vẫn có hiệu lực cho đến khi bạn làm mới URL đó để nhận mật mã mới hoặc bạn sử dụng mật mã với get_token để tạo mã truy cập.

    Xin lưu ý rằng bạn chỉ có thể sử dụng mật mã khi xác thực bằng IDP SAML. Bạn không thể sử dụng mật mã để xác thực với IDP LDAP.

  6. Gọi get_token để nhận mã truy cập OAuth2, như trong ví dụ sau:
    get_token -u EMAIL_ADDRESS

    Trong đó EMAIL_ADDRESS là địa chỉ email của người dùng Edge.

    (Chỉ SAML) Nhập mật mã vào dòng lệnh ngoài địa chỉ email, như ví dụ sau minh họa:

    get_token -u EMAIL_ADDRESS -p PASSCODE

    Tiện ích get_token lấy mã truy cập OAuth2, in mã này lên màn hình, sau đó ghi mã này và mã làm mới vào ~/.sso-cli.

  7. Truyền mã truy cập đến một lệnh gọi API Quản lý Edge dưới dạng tiêu đề Bearer, như trong ví dụ sau:
    curl -H "Authorization: Bearer ACCESS_TOKEN"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. Sau khi nhận được mã truy cập mới lần đầu tiên, bạn có thể lấy mã truy cập và chuyển mã đó vào một lệnh gọi API bằng một lệnh duy nhất, như trong ví dụ sau:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    Với dạng lệnh này, nếu mã truy cập đã hết hạn, thì mã đó sẽ được tự động làm mới cho đến khi mã làm mới hết hạn.

(Chỉ SAML) Sau khi mã làm mới hết hạn, get_token sẽ nhắc bạn nhập mật mã mới. Bạn phải chuyển đến URL nêu trên trong bước 3 rồi tạo mật mã mới thì mới có thể tạo mã truy cập OAuth mới.

Sử dụng API quản lý để nhận và làm mới mã thông báo

Bài viết Sử dụng biện pháp bảo mật OAuth2 bằng API quản lý Apigee Edge sẽ hướng dẫn cách sử dụng API quản lý Edge để lấy và làm mới mã thông báo. Bạn cũng có thể sử dụng lệnh gọi API Edge để nhận mã thông báo được tạo từ câu nhận định SAML.

Điểm khác biệt duy nhất giữa các lệnh gọi API được ghi nhận trong tài liệu Sử dụng giải pháp bảo mật OAuth2 bằng API quản lý Apigee Edge là URL của lệnh gọi phải tham chiếu đến tên vùng của bạn. Ngoài ra, để tạo mã truy cập ban đầu bằng IDP SAML, bạn phải thêm mật mã như trong bước 3 của quy trình trên.

Để được uỷ quyền, hãy truyền thông tin đăng nhập ứng dụng OAuth2 được đặt trước trong tiêu đề Authorization. Lệnh gọi sẽ in mã truy cập và làm mới ra màn hình.

Lấy mã truy cập

(LDAP) Sử dụng lệnh gọi API sau đây để tạo mã truy cập ban đầu và mã làm mới:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
  -H "accept: application/json;charset=utf-8" \
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
  http://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&username=USER_EMAIL&password=USER_PASSWORD'

(SAML) Sử dụng lệnh gọi API sau đây để tạo mã truy cập ban đầu và làm mới:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
  -H "accept: application/json;charset=utf-8" \
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
  https://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&response_type=token&passcode=PASSCODE'

Xin lưu ý rằng quá trình xác thực với IDP SAML yêu cầu mật mã tạm thời, trong khi IDP LDAP thì không.

Làm mới mã truy cập

Để làm mới mã truy cập vào lúc khác, hãy sử dụng lệnh gọi sau đây có chứa mã làm mới:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
  -H "Accept: application/json;charset=utf-8" \
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
  https://EDGE_SSO_IP_DNS:9099/oauth/token \
  -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'