Token introspection với Spring Authorization Server

163

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

Để kiểm tra một access token có còn valid hay không, có expired chưa, có bị revoke hay chưa, có phải do Authorization Server của chúng ta issue hay không, chúng ta sẽ sử dụng endpoint token introspection của Authorization Server để làm điều này.

Với Authorization Server được implement sử dụng Spring Authorization Server, các bạn có thể sử dụng endpoint token introspection là POST request http://localhost:8080/oauth2/introspect với request body có chứa parameter token với value là access token mình chúng ta muốn kiểm tra.

  C Token là gì? Cú pháp trong lập trình C/C++
  Cách sử dụng properties trong tập tin cấu hình của Spring

Xem thêm nhiều việc làm Spring Boot hấp dẫn trên TopDev

Lưu ý là khi setup Authorization Server sử dụng Spring Authorization Server, các bạn cần cung cấp thông tin issuer bằng cách khai báo một bean của class ProviderSettings, ví dụ như sau:

@Bean
public ProviderSettings providerSettings() {
// @formatter:off
return ProviderSettings.builder()
.issuer("http://localhost:8080")
.build();
// @formatter:on
}

Giả sử bây giờ, các bạn lấy access token của một RegisteredClient được khai báo trong Authorization Server:

// @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())
.build();
// @formatter:on

sau đó request tới endpoint token introspection, các bạn sẽ thấy kết quả như sau: