JustIAM is a self-hosted identity provider built around groups, not roles. SSO, access control, and automation — without the enterprise complexity.
Groups, not roles
Assign apps to groups directly. No role hierarchies to maintain, no permission spreadsheets to manage.
Requests, not tickets
Users request temporary access. It gets approved, granted, and auto-revoked — without anyone remembering to clean up.
Events, not scripts
Login, group change, access granted — any event can trigger any action. No cron jobs, no glue code.
In JustIAM, groups are the fundamental unit. Users belong to groups. Groups get access to applications. That's the whole model. No roles to define, no permission matrices to maintain.
Application Mappings connect groups to apps with a custom claim value.
Each group × app combination can carry a different value —
admin,
viewer,
a team slug, anything you want.
JustIAM injects it into the OIDC token automatically.
Users request access to groups for a defined period. Approvers review and approve. Access is granted automatically — and revoked the moment it expires. No manual cleanup. No forgotten permissions.
JustIAM emits events for logins, group changes, access grants, token revocations — everything. Connect conditions and actions: a webhook, Slack message, email, or a custom script. Full delivery history so you know what ran and when.
Write a Go script. Run it on a schedule. Sync users and groups to GitHub Teams, create Datadog users, provision SFTP accounts, manage Jira projects — anything your infrastructure needs, driven from the source of truth.
// Sync JustIAM groups → GitHub Teams
func Run(ctx context.Context) error {
token := secrets.Get("github_token")
groups := idp.ListGroups(ctx)
for _, g := range groups {
members := idp.GroupMembers(ctx, g.ID)
gh.SyncTeam(token, g.Name, emails(members))
// adds new, removes stale — idempotent
}
return nil
}
Protocol & integration support
The official Terraform provider lets you manage every JustIAM resource — users, groups, applications, mappings, roles, event actions — as infrastructure.
resource "justiam_application" "argocd" {
name = "argocd"
type = "web"
redirect_uris = ["https://argo/auth/callback"]
mfa_policy = "required"
claim_mappings = [{
claim = "groups"
value = "$${roles}"
}]
}
resource "justiam_group_app_mapping" "eng" {
group_id = justiam_group.engineering.id
application_id = justiam_application.argocd.id
role_value = "admin"
}
resource "justiam_group_app_mapping" "ops" {
group_id = justiam_group.ops.id
application_id = justiam_application.argocd.id
role_value = "viewer"
}
One compose file. No external dependencies. Full SSO in your infrastructure today.
$ git clone https://github.com/justiam/justiam
$ docker compose up -d
✓ JustIAM running at http://localhost:8080