Tự động hoá thao tác cho các nhà cung cấp danh tính (IDP) bên ngoài

Khi sử dụng IDP bên ngoài với API Edge, quy trình mà bạn sử dụng để lấy mã truy cập và làm mới OAuth2 qua hoạt động tương tác với IDP được gọi là quy trình mật mã. Với quy trình mật mã, bạn sử dụng trình duyệt để lấy mật mã một lần và sau đó dùng để lấy mã thông báo OAuth2.

Tuy nhiên, môi trường phát triển của bạn có thể hỗ trợ tính năng tự động hoá cho các tác vụ phát triển phổ biến, chẳng hạn như tự động kiểm thử hoặc CI/CD. Để tự động hoá những tác vụ này khi một IDP bên ngoài được bật, bạn cần có một cách để lấy và làm mới mã thông báo OAuth2 mà không cần phải sao chép/dán mật mã từ trình duyệt.

Edge hỗ trợ việc tạo mã thông báo tự động thông qua việc sử dụng người dùng máy trong các tổ chức đã bật IDP. Người dùng máy có thể lấy mã thông báo OAuth2 mà không cần phải chỉ định mật mã. Điều đó có nghĩa là bạn có thể hoàn toàn tự động hoá quá trình lấy và làm mới mã thông báo OAuth2 bằng cách sử dụng Edge Management API (API Quản lý Edge).

Có hai cách để tạo người dùng máy cho tổ chức hỗ trợ IDP:

Mỗi phương pháp trong số này được mô tả trong các phần tiếp theo.

Bạn không thể tạo người dùng máy cho các tổ chức chưa bật IDP bên ngoài.

Tạo người dùng bằng apigee-ssoadminapi.sh

Sử dụng tiện ích apigee-ssoadminapi.sh để tạo người dùng máy trong tổ chức có IDP. Hãy xem phần Sử dụng apigee-ssoadminapi.sh để biết thêm thông tin. Bạn có thể tạo một người dùng máy duy nhất mà tất cả tổ chức của bạn đều sử dụng hoặc tạo một người dùng máy riêng cho từng tổ chức.

Người dùng máy được tạo và lưu trữ trong kho dữ liệu Edge, chứ không phải trong IDP của bạn. Do đó, bạn không có trách nhiệm duy trì người dùng máy bằng cách sử dụng Giao diện người dùng Edge và API Quản lý Edge.

Khi tạo người dùng máy, bạn phải chỉ định một địa chỉ email và mật khẩu. Sau khi tạo người dùng máy, bạn chỉ định người dùng đó cho một hoặc nhiều tổ chức.

Cách tạo người dùng máy bằng apigee-ssoadminapi.sh:

  1. Sử dụng lệnh apigee-ssoadminapi.sh sau để tạo người dùng cho máy:
    apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \
      --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \
      -u machine_user_email -p machine_user_password

    QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?

    Trong trường hợp:

    • SSO_ADMIN_NAME là tên người dùng quản trị do thuộc tính SSO_ADMIN_NAME xác định trong tệp cấu hình, dùng để định cấu hình mô-đun SSO của Apigee. Giá trị mặc định là ssoadmin.
    • SSO_ADMIN_SECRET là mật khẩu quản trị viên do thuộc tính SSO_ADMIN_SECRET chỉ định trong tệp cấu hình.

      Trong ví dụ này, bạn có thể bỏ qua các giá trị cho --port--ssl vì mô-đun apigee-sso sử dụng các giá trị mặc định là 9099 đối với --port và http cho --ssl. Nếu chế độ cài đặt của bạn không sử dụng các giá trị mặc định này, hãy chỉ định chúng nếu thích hợp.

  2. Đăng nhập vào giao diện người dùng của Edge và thêm email của người dùng máy vào tổ chức của bạn, sau đó chỉ định vai trò cần thiết cho người dùng thiết bị đó. Hãy xem phần Thêm người dùng toàn cầu để biết thêm thông tin.

Tạo người dùng máy bằng API Quản lý Edge

Bạn có thể tạo một người dùng máy bằng cách sử dụng API Quản lý Edge thay vì dùng tiện ích apigee-ssoadminapi.sh.

Cách tạo người dùng máy bằng API quản lý:

  1. Hãy dùng lệnh curl sau để lấy mã thông báo của người dùng ssoadmin, tên người dùng của tài khoản quản trị viên của apigee-sso:
    curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \
      -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \
      -d "response_type=token" -d "grant_type=client_credentials" \
      --data-urlencode "client_secret=SSO_ADMIN_SECRET" \
      --data-urlencode "client_id=ssoadmin"

    Trong đó SSO_ADMIN_SECRET là mật khẩu quản trị viên mà bạn đặt khi cài đặt apigee-sso theo chỉ định của thuộc tính SSO_ADMIN_SECRET trong tệp cấu hình.

    Lệnh này hiển thị một mã thông báo mà bạn cần thực hiện lệnh gọi tiếp theo.

  2. Dùng lệnh curl sau để tạo người dùng máy, truyền mã thông báo mà bạn đã nhận được ở bước trước:
    curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \
      -H "Accept: application/json" -H "Content-Type: application/json" \
      -d '{"userName" : "machine_user_email", "name" :
        {"formatted":"DevOps", "familyName" : "last_name", "givenName" :
        "first_name"}, "emails" : [ {"value" :
        "machine_user_email", "primary" : true } ], "active" : true,
        "verified" : true, "password" : "machine_user_password" }' \
      -H "Authorization: Bearer token"

    Bạn cần có mật khẩu người dùng máy trong các bước sau.

  3. Đăng nhập vào giao diện người dùng của Edge.
  4. Thêm email của người dùng thiết bị vào tổ chức của bạn và chỉ định người dùng thiết bị vào vai trò cần thiết. Hãy xem bài viết Thêm người dùng toàn cầu để biết thêm thông tin.

Lấy và làm mới mã thông báo người dùng của máy

Sử dụng Edge API để lấy và làm mới mã thông báo OAuth2 bằng cách truyền thông tin xác thực của người dùng trên máy, thay vì mật mã.

Cách lấy mã thông báo OAuth2 cho người dùng máy:

  1. Sử dụng lệnh gọi API sau để 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 \
      http://Edge_SSO_IP_DNS:9099/oauth/token -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Lưu mã thông báo để sử dụng sau.

  2. Chuyể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" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    Trong đó org_name là tên của tổ chức chứa người dùng máy.

  3. Để sau này làm mới mã truy cập, hãy sử dụng lệnh gọi sau 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 \
      http://edge_sso_IP_DNS:9099/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken'