Bỏ qua, đến nội dung

Xác thực

OAuth 2.0 Client Credentials, quyền truy cập và vòng đời của mã.

Lấy mã truy cập

  • Địa chỉ: POST https://<trường>.<tên-miền-nền-tảng>/oauth/token
  • Dạng gửi: application/x-www-form-urlencoded (khuyên dùng, theo OAuth 2.0) hoặc JSON, với grant_type=client_credentials.
  • Thông tin kết nối: gửi client_id và client_secret bằng HTTP Basic (khuyên dùng), hoặc trong thân yêu cầu.
  • scope (không bắt buộc): các quyền cần, cách nhau bởi dấu cách. Bỏ trống thì nhận mọi quyền của kết nối.
curl -u "CLIENT_ID:CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  -d "scope=https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" \
  https://<trường>.<tên-miền-nền-tảng>/oauth/token

Phản hồi có tiêu đề Cache-Control: no-store. Gọi API kèm tiêu đề Authorization: Bearer <access_token>.

Quyền

Quyền (scope)Cho phép đọc
https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonlyMọi điểm truy cập Danh sách
https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonlyMọi điểm truy cập Danh sách
https://purl.imsglobal.org/spec/or/v1p2/scope/gradebook.readonlyMọi điểm truy cập Kết quả

Khi tạo kết nối, nhà trường chọn "Danh sách" (roster) và/hoặc "Kết quả thực tập" (gradebook).

Vòng đời của mã

  • Mã truy cập có hạn 1 giờ. Hết hạn thì xin mã mới; không có mã làm mới (refresh token).
  • Mã chỉ dùng được ở đúng trường đã cấp.
  • Nhà trường thu hồi kết nối thì mọi mã đã cấp ngừng hoạt động ngay. Muốn dùng tiếp phải tạo kết nối mới.
  • Nhà trường có thể đặt thời hạn cho kết nối (30, 90, 180, 365 ngày, hoặc không hết hạn) và giới hạn địa chỉ mạng được gọi.
  • Khoá bí mật chỉ hiện một lần lúc tạo. Mất khoá thì nhà trường bấm Thay khoá để cấp khoá mới; khoá cũ còn dùng được 24 giờ.
  • Kết nối loại mã truy cập (ttdn_pat_...) gọi thẳng API OneRoster bằng Authorization: Bearer, không cần bước lấy mã. Xem API của cổng.

Không gửi khoá bí mật qua tin nhắn hay email không mã hoá, và không đưa vào mã nguồn. Lưu ở nơi giữ bí mật của hệ thống (biến môi trường, kho khoá).

Lỗi khi lấy mã

Theo OAuth 2.0 (RFC 6749):

Mã HTTPerrorKhi nào
401invalid_clientSai mã ứng dụng hoặc khoá bí mật, kết nối đã thu hồi, hoặc kết nối của trường khác
400unsupported_grant_typegrant_type khác client_credentials
400invalid_scopeXin quyền mà kết nối không có
429slow_downQuá 60 lần lấy mã trong 15 phút từ cùng một địa chỉ mạng
503temporarily_unavailableHệ thống tạm thời không phản hồi; thử lại sau ít phút

Trong trang này