Token revocation với Spring Authorization Server

750

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Để revoke một access token đang còn valid, không cho Client Application sử dụng access token đó nữa, chúng ta sẽ sử dụng token revocation endpoint. Với Authorization Server được xây dựng sử dụng Spring Authorization Server, các bạn có thể sử dụng POST request sau để revoke một access token: http://localhost:8080/oauth2/revoke.

  Bean, ApplicationContext, Spring Bean Life Cycle và Component scan
  Bảo mật ứng dụng Java web bởi Spring Security

Xem thêm các chương trình tuyển dụng Spring hấp dẫn trên TopDev

Ví dụ bây giờ mình có một RegisteredClient như sau:

// @formatter:off
RegisteredClient registeredClient1 = RegisteredClient.withId(UUID.randomUUID().toString())
.clientId("huongdanjava1")
.clientSecret("{noop}123")
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
.tokenSettings(tokenSettings())
.scope("accees-hello")
.build();
// @formatter:on

Lấy access token của client này, rồi gọi tới token introspection request, các bạn sẽ thấy kết quả như sau:

Bây giờ, nếu mình gọi tới request token revocation với 3 tham số trong phần body của request là token cần revoke, client_id và client_secret của access token này, các bạn sẽ thấy kết quả như sau:

Vậy là chúng ta đã revoke thành công rồi đó các bạn.

Giờ nếu các bạn gọi lại request token introspection cho access token này, các bạn sẽ thấy token invalid, như sau: