Phê duyệt và thu hồi mã truy cập

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Thu hồi quyền truy cập và làm mới mã thông báo

Trong một số trường hợp, ứng dụng bắt buộc phải thu hồi hoặc vô hiệu hoá mã thông báo một cách rõ ràng, chẳng hạn như khi người dùng đăng xuất khỏi ứng dụng có hỗ trợ OAuth. Nếu bạn thu hồi mã thông báo, người dùng có thể phê duyệt lại mã thông báo bất cứ lúc nào trước khi mã hết hạn.

Quy trình thu hồi mã thông báo được xác định theo quy cách thu hồi mã thông báo OAuth 2.0.

Apigee Edge cung cấp hoạt động InvalidateToken cho phép bạn định cấu hình một điểm cuối thu hồi mã thông báo chuyên dụng. Bằng cách phát hành URI của điểm cuối này, bạn cho phép nhà phát triển ứng dụng vô hiệu hoá các mã thông báo do Edge phát hành.

Dưới đây là cấu hình mẫu cho chính sách OAuthV2 và hoạt động InvalidateToken. Trong trường hợp này, cả mã truy cập và mã làm mới liên kết đều bị thu hồi. Về mặt kỹ thuật, cả hai lệnh này đều bị thu hồi vì cờ tầng được đặt thành đúng. Để biết thêm thông tin về cách hoạt động của cờ phân tầng, hãy xem phần thuộc tính của phần tử Mã thông báo bên dưới.

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Phần tử <Tokens>/<Token>

Xác định biến luồng chỉ định mã thông báo cần thu hồi. Nếu dự kiến nhà phát triển sẽ gửi yêu cầu thu hồi bằng cách sử dụng tham số truy vấn có tên access_token, chẳng hạn, thì biến luồng chính xác sẽ là: request.queryparam.access_token. Ví dụ: để yêu cầu mã thông báo trong tiêu đề HTTP, hãy đặt giá trị này thành request.header.access_token.

Thuộc tính

  • type (bắt buộc, chuỗi): Loại mã thông báo do biến đã chỉ định xác định. Giá trị được hỗ trợ: accesstokenrefreshtoken:
    • Để thu hồi mã truy cập, hãy chỉ định loại accesstoken.
    • Để thu hồi cả mã truy cập lẫn mã làm mới, hãy chỉ định loại refreshtoken. Khi thấy loại refreshtoken, Edge sẽ giả định rằng mã thông báo là một mã làm mới. Nếu tìm thấy mã làm mới đó, thì mã sẽ bị thu hồi. Nếu không tìm thấy mã làm mới đó, Edge sẽ kiểm tra xem đó có phải là mã truy cập hay không. Nếu mã truy cập này tồn tại thì mã sẽ bị thu hồi.

      Lưu ý: Nếu bạn chuyển một mã thông báo đã hết hiệu lực tới một chính sách InvalidateToken, thì chính sách này sẽ không trả về lỗi, mặc dù có thể bạn sẽ thấy lỗi này. Thao tác như vậy không có tác dụng.
  • cascade (không bắt buộc, boolean, mặc định: true) Mục đích chính của thuộc tính này là thu hồi mã làm mới mà không thu hồi mã truy cập đã liên kết. Hãy cân nhắc các trường hợp sau:
    • Chỉ thu hồi mã làm mới và không thu hồi mã truy cập đã liên kết của mã đó. Để thực hiện việc này, hãy đặt loại <Token> thành refreshtoken và đặt tầng thành false.
    • Thu hồi cả mã truy cập và mã làm mới. Để thực hiện việc này, hãy đặt loại <Token> thành accesstoken. Giá trị của phân tầng có thể là true (mặc định) hoặc false. Nếu bạn đặt giá trị này thành true, thì cả mã truy cập và mã làm mới đều sẽ bị thu hồi. Nếu bạn đặt giá trị này thành false, mã truy cập sẽ bị thu hồi và mã làm mới không sử dụng được. Hãy xem Ghi chú bên dưới để được giải thích thêm.
    • Thu hồi mã truy cập và không thu hồi mã làm mới đã liên kết của mã đó. Không được hỗ trợ. Hãy xem phần Ghi chú bên dưới để biết thêm thông tin giải thích.

Lưu ý: Vì lý do bảo mật, nếu bạn thu hồi mã truy cập, mã làm mới liên kết cũng sẽ bị thu hồi. Do đó, bạn không thể dùng thuộc tính cascade để chỉ thu hồi mã truy cập. Ví dụ: nếu bạn đặt loại <Token> thành accesstoken và đặt cascade=false, mã truy cập sẽ bị thu hồi (như dự kiến); tuy nhiên, mã làm mới liên kết sẽ không sử dụng được. Bạn không thể dùng mã này để làm mới mã truy cập đã thu hồi. Trường hợp sử dụng chính cho thuộc tính cascade là khi bạn chỉ muốn thu hồi một mã làm mới. Trong trường hợp đó, hãy đặt loại <Token> thành refreshtoken và đặt cascade=false. Mã làm mới sẽ bị thu hồi, nhưng mã truy cập được liên kết sẽ vẫn hợp lệ (cho đến khi hết hạn hoặc bị thu hồi). Để biết thêm thông tin, hãy xem bài viết thảo luận này trên Diễn đàn cộng đồng.

Phê duyệt mã truy cập và làm mới

Sử dụng thao tác ValidationToken để "phê duyệt lại" mã thông báo đã thu hồi. Nghĩa là khi bạn áp dụng thao tác này, trạng thái của mã truy cập hoặc mã làm mới được nhắm đến sẽ thay đổi từ "thu hồi" thành "đã phê duyệt". Bạn có thể xác thực mọi mã thông báo đã thu hồi chưa hết hạn.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Phần tử <Tokens>/<Token>

Xác định biến luồng chỉ định mã thông báo cần được xác thực. Nếu dự kiến nhà phát triển gửi yêu cầu xác thực bằng cách sử dụng tham số truy vấn có tên access_token, thì biến luồng chính xác sẽ là: request.queryparam.access_token. Ví dụ: để yêu cầu mã thông báo trong tiêu đề HTTP, hãy đặt giá trị này thành request.header.access_token.

Thuộc tính

  • type (bắt buộc, chuỗi) Loại mã thông báo do biến đã chỉ định xác định. Giá trị được hỗ trợ là accesstokenrefreshtoken.
  • cascade (không bắt buộc, boolean): Theo mặc định, tuỳ chọn này được đặt thành true và khiến quy trình xác thực truyền đến các mã thông báo liên kết. Vì vậy, nếu áp dụng cho một mã làm mới, thì mã truy cập liên kết với mã đó cũng được xác thực. Nếu áp dụng cho mã truy cập, thì mã làm mới liên kết với mã đó cũng được xác thực. Nếu bạn thiết lập giá trị này thành false, thì chỉ mã truy cập hoặc mã làm mới đã chỉ định mới được xác thực.