Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Thu hồi mã truy cập và mã làm mới
Trong một số trường hợp, các ứng dụng 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 một ứng dụng có hỗ trợ OAuth. Nếu bạn thu hồi một mã thông báo, thì mã thông báo đó có thể được phê duyệt lại bất cứ lúc nào trước khi 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 một thao tác 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 xuất bản 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à một ví dụ về cấu hình cho chính sách OAuthV2 và thao tác InvalidateToken. Trong trường hợp này, cả mã truy cập và mã làm mới được liên kết đều bị thu hồi. Về mặt kỹ thuật, cả hai đều bị thu hồi vì cờ thác được đặt thành true. Để biết thêm thông tin về cách hoạt động của cờ xếp 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 nhà phát triển dự kiến gửi yêu cầu thu hồi bằng cách sử dụng một tham số truy vấn có tên là access_token, chẳng hạn như biến luồng chính xác sẽ là: request.queryparam.access_token. Để yêu cầu mã thông báo trong tiêu đề HTTP, chẳng hạn như đặ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àaccesstokenvàrefreshtoken:- Để thu hồi mã truy cập, hãy chỉ định loại accesstoken.
- Để thu hồi cả mã truy cập và mã làm mới, hãy chỉ định loại refreshtoken. Khi thấy loại refreshtoken, Edge giả định rằng mã thông báo đó là mã làm mới. Nếu tìm thấy mã làm mới đó, thì mã này 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 tồn tại, thì mã đó sẽ bị thu hồi.
Lưu ý: Nếu bạn truyền một mã thông báo đã bị vô hiệu hoá cho chính sách InvalidateToken, thì chính sách này sẽ không trả về lỗi, mặc dù bạn có thể mong đợi điều đó. Thao tác như vậy không có hiệu lực.
-
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 được liên kết. Hãy cân nhắc những trường hợp sau:- Chỉ thu hồi mã làm mới và không thu hồi mã truy cập được liên kết. Để làm như vậy, hãy đặt loại <Token> thành
refreshtokenvà đặt tầng thànhfalse. - Thu hồi cả mã truy cập và mã làm mới. Để làm như vậy, hãy đặt loại <Token> thành
accesstoken. Giá trị của cascade có thể làtrue(mặc định) hoặcfalse. Nếu bạn đặt thànhtrue, thì cả mã truy cập và mã làm mới đều bị thu hồi. Nếu bạn đặt thànhfalse, mã thông báo truy cập sẽ bị thu hồi và mã làm mới sẽ không dùng được. Hãy xem phần Ghi chú bên dưới để biết thêm thông tin giải thích. - Thu hồi mã truy cập và không thu hồi mã làm mới được liên kết. 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.
- Chỉ thu hồi mã làm mới và không thu hồi mã truy cập được liên kết. Để làm như vậy, hãy đặt loại <Token> thành
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, thì mã truy cập sẽ bị thu hồi (như dự kiến); tuy nhiên, mã làm mới được liên kết sẽ không dùng được. Không thể dùng mã này để làm mới mã truy cập đã bị 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ã 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
nội dung thảo luận này trên Diễn đàn cộng đồng.
Phê duyệt mã truy cập và mã làm mới
Sử dụng thao tác ValidateToken để "phê duyệt lại" một mã thông báo đã bị thu hồi. Tức 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 mục tiêu 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 đã bị thu hồi nhưng 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 nhà phát triển dự kiến sẽ gửi yêu cầu xác thực bằng cách sử dụng một tham số truy vấn có tên là access_token, chẳng hạn như biến luồng chính xác sẽ là: request.queryparam.access_token. Để yêu cầu mã thông báo trong tiêu đề HTTP, chẳng hạn như đặ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àaccesstokenvàrefreshtoken.cascade(không bắt buộc, boolean): Theo mặc định, tuỳ chọn này được đặt thànhtruevà khiến quá trình xác thực lan truyền đến các mã thông báo được liên kết. Vì vậy, nếu được áp dụng cho mã làm mới, mã truy cập được liên kết cũng sẽ được xác thực. Nếu được áp dụng cho mã truy cập, mã làm mới được liên kết cũng sẽ được xác thực. Nếu bạn đặt giá trị này thànhfalse, thì chỉ mã truy cập hoặc mã làm mới được chỉ định mới được xác thực.