Add introspection endpoint

This commit is contained in:
Henry Hiles 2025-07-20 16:27:53 -04:00
commit 53867e273b
No known key found for this signature in database
2 changed files with 27 additions and 0 deletions

View file

@ -157,6 +157,31 @@ class ApiHelper {
}
}
Future<Response> introspectionHandler(Request request) async {
final token = Uri.splitQueryString(await request.readAsString())['token'];
if (token == null) return Response(400, body: "Missing token");
try {
JWT.verify(
token,
SecretKey(
(await File.fromUri(
Uri.file(ref.read(SettingsController.provider)!.jwtSecretFile),
).readAsString()),
),
);
return Response.ok(
json.encode({'active': true}),
headers: {'content-type': 'application/json'},
);
} catch (_) {
return Response.ok(
json.encode({'active': false}),
headers: {'content-type': 'application/json'},
);
}
}
Future<Response> logoutHandler(Request request) async =>
Response.ok("Log out is not currently implemented");
@ -168,6 +193,7 @@ class ApiHelper {
"authorization_endpoint": settings.authorizeEndpoint,
"token_endpoint": "${settings.issuer}/token",
"userinfo_endpoint": "${settings.issuer}/userinfo",
"introspection_endpoint": "${settings.issuer}/introspect",
"end_session_endpoint": "${settings.issuer}/logout",
"response_types_supported": ["code"],
"subject_types_supported": ["public"],