keycloak-auth-services — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited keycloak-auth-services (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Choose your task and load the appropriate reference:
Introspection" section)
Discovery" section)
resource-protection.md (see "IKeycloakAccessTokenProvider" section)
resource-protection.md (see "IProtectedResourcePolicyBuilder" section)
Parameter Resolvers" section)
| Package | Purpose |
|---|---|
Keycloak.AuthServices.Authentication | JWT Bearer (Web API) and OpenID Connect (Web App) authentication |
Keycloak.AuthServices.Authorization | RBAC (realm/client roles), Authorization Server client, [ProtectedResource] attribute, organization authorization |
Keycloak.AuthServices.Sdk | Hand-written Admin REST API + Protection API HTTP clients |
Keycloak.AuthServices.Sdk.Kiota | Auto-generated (Kiota) Admin REST API client, full API coverage |
Keycloak.AuthServices.Common | Shared configuration (KeycloakInstallationOptions), claims utilities |
Keycloak.AuthServices.OpenTelemetry | Metrics and tracing instrumentation |
Keycloak.AuthServices.Aspire.Hosting | .NET Aspire KeycloakResource integration |
Keycloak.AuthServices.Templates | dotnet new project templates |
dotnet add package Keycloak.AuthServices.Authentication
dotnet add package Keycloak.AuthServices.Commonusing Keycloak.AuthServices.Authentication;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddKeycloakWebApiAuthentication(builder.Configuration);
builder.Services.AddAuthorization();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!").RequireAuthorization();
app.Run();// appsettings.json, "Keycloak" section (kebab-case from adapter config)
{
"Keycloak": {
"realm": "Test",
"auth-server-url": "http://localhost:8080/",
"ssl-required": "none",
"resource": "test-client",
"verify-token-audience": true,
"credentials": {
"secret": "your-client-secret"
}
}
}All packages bind to "Keycloak" config section by default. Key properties:
| Property | Description |
|---|---|
realm | Keycloak realm name |
auth-server-url | Keycloak server URL (e.g., http://localhost:8080/) |
resource | Client ID |
ssl-required | none, external, or all |
verify-token-audience | Validate audience claim against resource |
credentials.secret | Client secret (confidential clients) |
Both kebab-case (Keycloak adapter format) and PascalCase are supported.
dotnet add package Keycloak.AuthServices.Authorizationbuilder.Services.AddKeycloakAuthorization(builder.Configuration)
.AddAuthorizationBuilder()
.AddPolicy("AdminOnly", policy => policy.RequireRealmRoles("admin"))
.AddPolicy("EditorOnly", policy => policy.RequireResourceRoles("editor"));builder.Services
.AddKeycloakAuthorization()
.AddAuthorizationServer(builder.Configuration);
app.MapGet("/workspaces", () => "Hello World!")
.RequireProtectedResource("workspaces", "workspace:read");dotnet add package Keycloak.AuthServices.Sdkbuilder.Services.AddKeycloakAdminHttpClient(builder.Configuration);
app.MapGet("/users", async (IKeycloakUserClient client) =>
await client.GetUsers("my-realm"));"Keycloak", override via configSectionName parameterIHttpClientBuilder for resilience, handlers, etc.Duende.AccessTokenManagement for service account tokensAddKeycloakAuthServicesInstrumentation() for metrics and tracingAddKeycloakContainer("keycloak") + AddRealm("Test") for local dev8414 server metadata discovery
introspection
membership requirements, parameter resolvers
resources, policy provider, IKeycloakAccessTokenProvider, IProtectedResourcePolicyBuilder, pluggable parameter resolvers
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.