Hellmade.ServiceAccess.Client 0.2.1
Hellmade.ServiceAccess.Client
Client package for checking user access to a service via Hub.
Purpose
- centralize Hub
permissions/checkAPI calls - provide short-lived caching for resilience
- keep per-service integration minimal and consistent
Interface
IServiceAccessAuthorizerHasAccessAsync(externalUserId, serviceKey, bearerToken, cancellationToken)
DI wiring
services.AddHubServiceAccessAuthorizer(options =>
{
options.HubApiBaseUrl = "https://hub-api.internal";
options.CacheSeconds = 120;
options.FailOpenWithCachedValue = true;
});
Middleware usage example
var externalUserId = context.User.FindFirstValue("sub");
var bearerToken = context.Request.Headers.Authorization.ToString().Replace("Bearer ", "");
var hasAccess = await authorizer.HasAccessAsync(
externalUserId!,
"my-service-key",
bearerToken,
context.RequestAborted);
if (!hasAccess)
{
context.Response.StatusCode = StatusCodes.Status403Forbidden;
return;
}
Onboarding checklist for another service
- Validate Clerk JWT locally.
- Resolve user
subclaim. - Call
IServiceAccessAuthorizerwith yourserviceKey. - Deny request when
HasAccessAsyncis false. - Keep service-local roles/permissions separate from Hub access check.
No packages depend on Hellmade.ServiceAccess.Client.
.NET 10.0
- Microsoft.Extensions.Caching.Memory (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)