use pdk::token_introspection::{IntrospectionResult, ParsedToken, ScopesValidator, TokenValidator, TokenValidatorBuilder};
#[entrypoint]
async fn configure(
launcher: Launcher,
Configuration(bytes): Configuration,
validator_builder: TokenValidatorBuilder,
) -> Result<()> {
// [...]
// Create a token validator
let mut validator_instance = validator_builder
.new("token-cache")
.with_path("/introspect")
.with_authorization_value("Basic YWRtaW46YWRtaW4=")
.with_expires_in_attribute("exp")
.with_max_token_ttl(600)
.with_timeout_ms(10000)
.with_max_cache_entries(10000)
.with_scopes_validator(ScopesValidator::all(scopes_vector))
.with_service(config.my_service)
.build();
// [...]
}
Using OAuth 2.0 Token Introspection Library Functions
| To view an example policy project that uses Flex Gateway Policy Development Kit (PDK)'s Token Introspection feature, see OAuth 2.0 Token Introspection Policy Example. |
Use the Flex Gateway Policy Development Kit (PDK) Token Introspection library functions to validate incoming OAuth 2.0 tokens with an upstream introspection service.
Configure the Token Validator
To access OAuth 2.0 Token Introspection functionality, you must import the token_introspection module from the PDK crate and inject the TokenValidatorBuilder in the configure function.
The TokenValidatorBuilder provides these methods to configure the token validator. You must call with_service before build, all other methods are optional:
| Method | Parameter | Default | Description |
|---|---|---|---|
|
path ( |
|
Sets the introspection endpoint path. |
|
value ( |
|
Sets the authorization header value for introspection requests. |
|
attr ( |
|
Sets the attribute name for expiration time in the introspection response. |
|
ttl ( |
|
Sets the maximum token TTL in seconds; tokens with a longer TTL are treated as expired. Use |
|
timeout ( |
|
Sets the timeout for introspection requests in milliseconds. |
|
max_entries ( |
|
Sets the maximum number of entries in the token cache. |
|
validator ( |
— |
Sets the scopes validator for token validation (for example, |
|
service ( |
Required |
Sets the OAuth2 introspection service endpoint. Required to build the validator. |
| The configure function receives the configuration parameters defined in your policy schema. |
Validate a Token
Once configured, the validator provides the validate function, that expects a token string. The validate function sends a request to the introspection endpoint and returns the IntrospectionResult:
// extract token from header
let auth_header = handler.header("Authorization");
let token = auth_header.split_whitespace()[1];
let result = validator
.validate(&token)
.await
.map_err(PolicyError::Introspection)?;



