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

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

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 nhiệm vụ phát triển phổ biến, chẳng hạn như tự động hoá thử nghiệm hoặc CI/CD. Để tự động hoá những công việc này khi một nhà cung cấp danh tính (IDP) bên ngoài đang bật, bạn cần một cách nào đó để lấy và làm mới mã thông báo OAuth2 mà không cần sao chép/dán mật mã từ trình duyệt.

Edge hỗ trợ tạo mã thông báo tự động thông qua việc sử dụng người dùng máy trong tổ chức 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 chỉ định mật mã. Tức là bạn có thể tự động hoá hoàn toàn quy trình lấy và làm mới mã thông báo OAuth2 bằng cách sử dụng API quản lý Edge.

Có hai cách để tạo người dùng máy cho một tổ chức đã bật 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 máy bằng apigee-ssoadminapi.sh

Sử dụng apigee-ssoadminapi.sh để tạo người dùng máy trong tổ chức đã bật IDP. Xem phần Sử dụng apigee-ssoadminapi.sh để biết thêm. Bạn có thể tạo một người dùng máy duy nhất được sử dụng bởi tất cả tổ chức của bạn hoặc tạo một người dùng máy riêng cho mỗi 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 (nhà cung cấp danh tính) 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à tính năng quản lý Edge API.

Khi tạo người dùng máy, bạn phải chỉ định địa chỉ email và mật khẩu. Sau 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. Hãy sử dụng lệnh apigee-ssoadminapi.sh sau đây để tạo người dùng 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ị viên do Thuộc tính SSO_ADMIN_NAME 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 như được chỉ định bởi Thuộc tính SSO_ADMIN_SECRET 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 chế độ mặc định giá trị là 9099 cho --port và http cho --ssl. Nếu quá trình cài đặt 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 Edge rồi thêm email của người dùng trên máy vào tổ chức của bạn rồi chỉ định người dùng máy vào vai trò cần thiết. Xem Thêm người dùng toàn cầu cho khác.

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

Bạn có thể tạo người dùng máy bằng cách sử dụng API quản lý Edge thay vì sử 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. Dùng lệnh curl sau để lấy mã thông báo cho người dùng ssoadmin, tên người dùng của tài khoản quản trị viên 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ị mà bạn đã đặt khi cài đặt apigee-sso theo chỉ định của thuộc tính SSO_ADMIN_SECRET trong config của bạn.

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

  2. Sử dụng lệnh curl sau đây để tạo người dùng trên máy, chuyể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 sẽ cần mật khẩu của người dùng máy ở các bước sau.

  3. Đăng nhập vào giao diện người dùng Edge.
  4. Thêm email của người dùng máy vào tổ chức của bạn và chỉ định người dùng máy đó vào vai trò cần thiết. Xem phần Thêm người dùng toàn cầu để tìm hiểu thêm.

Lấy và làm mới mã thông báo người dùng trên máy

Sử dụng API Edge để lấy và làm mới mã thông báo OAuth2 bằng cách truyền mã thông tin xác thực 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 đâ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=m_user_email&password=m_user_password'

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

  2. Truyền mã truy cập vào lệnh gọi API quản lý Edge dưới dạng tiêu đề Bearer, như ví dụ sau cho thấy:
    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 có chứa người dùng máy.

  3. Để làm mới mã truy cập sau này, hãy sử dụng lệnh gọi có chứa mã làm mới sau đây:
    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'