Sử dụng SAML với API quản lý Edge

Edge for Private Cloud v. 4.17.09

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ý Edge. Ví dụ: bạn có thể gửi yêu cầu cURL sau đây tới API quản lý Edge để truy cập vào thông tin về tổ chức của bạn:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

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

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

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

Dùng get_token để lấy và làm mới mã thông báo

Tiện ích get_token trao đổi thông tin xác thực cơ bản và mật mã của bạn để lấy mã truy cập và làm mới OAuth2. Tiện ích get_token chấp nhận thông tin xác thực của bạn và in một mã truy cập hợp lệ. Nếu có thể làm mới mã thông báo, mã thông báo sẽ làm mới và in mã đó. Nếu mã làm mới hết hạn, mã sẽ nhắc nhậ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, sẵn sàng để sử dụng khi cần. Lệnh này cũng in một mã thông báo truy cập hợp lệ vào stdout. Từ đó, bạn có thể sử dụng Postman hoặc nhúng Postman vào một biến môi trường để sử dụng trong curl.

Quy trình sau đây mô tả cách dùng get_token để lấy mã truy cập OAuth2 cho việc thực hiện các 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 của tên DNS của máy lưu trữ mô-đun Edge SSO. Nếu bạn đã định cấu hình TLS trên Edge SSO, 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:
    unzip ssocli-bundle.zip
  3. Cài đặt get_token trong /usr/local/bin:
    ./install

    Sử dụng tuỳ chọn -b để chỉ định một vị trí khác:

    ./install -b path
  4. Đặt biến môi trường SSO_LOGIN_URL thành URL đăng nhập của bạn, ở dạng:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    trong đó edge_sso_IP_DNS là địa chỉ IP của tên DNS của máy lưu trữ mô-đun Edge SSO. Nếu bạn đã định cấu hình TLS trên Edge SSO, hãy sử dụng https và số cổng TLS chính xác.

  5. Trên trình duyệt, hãy truy cập vào URL sau để lấy mã xác thực một lần:
    http://edge_sso_IP_DNS:9099/passcode

    Nếu bạn đã định cấu hình TLS trên Edge SSO, hãy sử dụng https và số cổng TLS chính xác.

    URL này trả về một mật mã một lần vẫn hợp lệ cho đến khi bạn làm mới URL đó để lấy mật mã mới hoặc bạn sử dụng mật mã đó với get_token để tạo mã thông báo truy cập.

  6. Gọi get_token để lấy mã truy cập OAuth2:
    get_token -u emailAddress

    trong đó emailAddress là địa chỉ email của người dùng Edge. Bạn sẽ được nhắc nhập mật mã một lần mà bạn đã nhận được ở bước 3:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

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

    Bạn có thể nhập mã xác thực trên dòng lệnh bằng lệnh get_token ở dạng:

    get_token -u emailAddress -p passcode

  7. Truyền mã truy cập vào lệnh gọi API quản lý Edge dưới dạng tiêu đề Bearer:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    Sau khi lấy 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ã đó đến lệnh gọi API trong một lệnh duy nhất, như minh hoạ bên dưới:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

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

Sau khi mã làm mới hết hạn, get_token sẽ nhắc bạn nhập một mật mã mới. Bạn phải truy cập vào URL hiển thị ở trên trong Bước 3 và tạo mã xác thực mới trước khi có thể tạo mã thông báo 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 tính năng bảo mật OAuth2 bằng API quản lý Apigee Edge 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 cho các 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 lại trong phần Sử dụng tính năng 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ạn phải thêm mật mã, như minh hoạ trong bước 3 của quy trình trên.

Ví dụ: sử dụng lệnh gọi API sau đây để tạo mã thông báo truy cập và làm mới ban đầu:

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'

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

Để làm mới mã truy cập sau này, 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=refreshToken'