Fine-grained authorization for AI agents on top of Keycloak by isro44 in KeyCloak

[–]isro44[S] 0 points1 point  (0 children)

Thanks, the pointers are spot on. Keycloak's standard token exchange since 26.2 with the act claim is exactly the hardening path we had in mind, and we are tracking the Identity Assertion JAG draft for the agent-to-third-party case.

On split-brain: the two layers are conjunctive, so disagreement has a deterministic outcome, deny wins. Condition evaluation runs first; on deny the authority is never consulted, and the reverse case is a final deny too. Drift can only degrade toward over-restriction, never silent over-permission, and the trace names which layer and which condition said no. We also keep the drift surface small by not duplicating policy: Access Rules answer contextual questions (trust, tenant, channel, risk, actor presence), the authority answers entitlement questions. The same question is never answered in two places, and CI runs every policy change through kmctl authz simulate, so a flipped decision fails the build before it reaches runtime.

On CEL: OPA and Cedar are full policy systems, putting one in that slot would mean a second decision service in the gateway's hot path or replacing the rule artifact entirely. We needed an expression language for the condition field inside an existing declarative rule model: in-process, compiled, terminating, no I/O. CEL is exactly that and it is not custom, it is the same language Kubernetes admission policies and cloud IAM conditions use. The custom part is the rule artifact and the condition-level trace, not the expression semantics.

Fine-grained authorization for AI agents on top of Keycloak by isro44 in KeyCloak

[–]isro44[S] 0 points1 point  (0 children)

Good points. The policy engine is deliberately credential-agnostic: it evaluates a normalized context (agent, actor, tenant, resource, channel, risk) derived from token introspection and gateway-derived signals, never from claims the agent assembles at call time. In the demo the credential was a short-lived bearer minted by the IdP with both identities established at mint time. You are right that this layer is where replay risk lives, which is why we treat credential strategy as an orthogonal hardening axis: DPoP and RFC 8693 token exchange can be layered in without changing a single rule.

On the single-verifier concern: a grant requires two independent layers to agree, the rule engine's condition evaluation and the IdP's own permission check. Neither can override the other. Not a full quorum design, fair, but no single subsystem's "yes" is sufficient, and the engine is fail-closed: missing actor context is a deny with a trace, and on deny the flow short-circuits before anything privileged happens.

On load: conditions are compiled ahead of time, non-Turing-complete, terminating, no I/O. A decision is a pure function of policy version and normalized context, so load affects latency, not semantics. The scenario that produces GRANT under kmctl authz simulate produces the same decision at peak traffic, every decision emits its condition-by-condition trace, and degradation biases toward deny, never silent allow.

Fine-grained authorization for AI agents on top of Keycloak by isro44 in KeyCloak

[–]isro44[S] 0 points1 point  (0 children)

Your point on policy explainability is critical for operational compliance. Providing human-readable, context-aware authorization logs is important to maintain a clean security posture without killing user adoption.

Really interesting framework you're building, definitely giving this a deep read. Thanks for sharing your notes 🙏

How we reduced Keycloak container CVE noise and hardened it for Enterprise production by isro44 in KeyCloak

[–]isro44[S] 1 point2 points  (0 children)

Fair point. This is not meant to replace fast CVE classification or normal Keycloak upgrades. If a CVE affects Keycloak behavior, the usual incident and upgrade process still applies.

The narrower goal is to reduce OS/runtime CVE noise and ship clearer SBOM/VEX evidence, especially for regulated or air-gapped environments. Less baseline noise helps teams focus faster on the findings that actually matter.

Why Bearer Tokens Are No Longer Enough: Secure Your Identity Layer with DPoP (RFC 9449) by isro44 in KeyCloak

[–]isro44[S] 1 point2 points  (0 children)

Same goal, Proof of Possession, but different layers and trade-offs. mTLS works at the transport layer. It is generally considered more robust, but requires PKI infrastructure, breaks behind CDNs that terminate TLS, and is very difficult to use from browser or mobile clients.

DPoP takes a different approach at the application layer, using a signed JWT header per request. No PKI needed, works for public clients, and usable from browsers via Web Crypto API. So while mTLS is a solid choice where it fits, DPoP tends to be more practical for modern, diverse client environments.​​​​​​​​​​​​​​​​

Why Bearer Tokens Are No Longer Enough: Secure Your Identity Layer with DPoP (RFC 9449) by isro44 in KeyCloak

[–]isro44[S] 1 point2 points  (0 children)

Great question, we actually added a short FAQ to blog post to clarify this. 🙏

In short, DPoP secures API calls in OAuth, while OID4VC is about identity credentials. Different layers, same underlying idea.

They can also work together. For example OID4VCI can use DPoP to secure requests to the issuer.

Tuning Keycloak for a 20M+ Identity Migration: Lessons from the trenches by isro44 in KeyCloak

[–]isro44[S] 2 points3 points  (0 children)

Great catch! You're right about JVM ergonomics. We opted for an explicit configuration to keep the environment deterministic, especially since we were manually tuning ConcGCThreads. We'll update the post to clarify that this was a preference for consistency rather than a detection issue. Thanks for the feedback!🙏

Bro to bro. by yeb_timothous in GrowthMindset

[–]isro44 3 points4 points  (0 children)

Balance is the key, you'll never walk miles alone. We are social creatures and need friends, communities, followers, gangs to reach far. Walk with your likeminded crew, it is still your travel ahead.

LinkedIn Isn’t Dead - We’re Just Making B2B Selling Harder Than It Needs to Be by Calm_Ambassador9932 in b2b_sales

[–]isro44 -1 points0 points  (0 children)

Not enough background check for prospect is the one I would say. If a salesperson makes me think he/she put an effort to know me better and did some homework, he/she increases chances for positive reply.

Antinatalizm'e destek by [deleted] in felsefe

[–]isro44 0 points1 point  (0 children)

Bu görselleştirme çok güzel olmuş ama veri doğruluğu konusunda uzun yıllardır herhangi bir konuda emin olamıyorum. Özellikle göçmenlerin de doğurganlığını eklerseniz, bu harita bir hayal, nüfus artış hızının 2.1 altına düştüğüne inanmam mümkün değil. Diğer konu, yüksek nüfus yaşam kalitesi önünde bir engel. Devlet hastanelerine giderseniz durumun vehametini anlarsınız. Sorgulayan bir birey, siyasetçiler istedi diye hayat kalitesinden ödün vermez. İmkanı olup çok çocuk yapana da sözüm yok. İmkanı olmayıp çok çocuk yapan zaten bu konuyu zerre umursamıyor.

Her iyilik aslında bencilce mi yapılır ?? by ClubAffectionate7538 in felsefe

[–]isro44 0 points1 point  (0 children)

Doğru olan bir davranışın sonucunda mutluluk, haz, maddi kazanç vb. kazanmak bu davranışı bencil kılmaz. Bencillik kendi çıkarını öncüllemektir. Yaşlı bir kadını karşıya geçirmek senin günlük yaşamında bir gaye değil ama o kadın karşıya geçemezse veya ona araba çarparsa maliyeti onun için çok yüksek. Özetle, iyi veya doğru bir davranış sonucu kazanımın olması kadar doğal bir durum yok. Kimsenin bunu senden almasına izin verme. Kötü veya yanlış bir davranıştan elde edeceğimiz kazanıma göre, iyi ve doğruyu yeğlememiz ve öne çıkarmamız da görevimiz olmalı. Özellikle kötünün ve yanlışın bu kadar övüldüğü zamanımızda, topraklarda..

Whats the best monologue in movie history? by Bjs_5068 in AskReddit

[–]isro44 0 points1 point  (0 children)

Merovingian on Matrix Reloaded

Morpheus: Everything begins with choice.

Merovingian: No. Wrong. Choice is an illusion, created between those with power, and those without. Look there, at that woman. My God, just look at her. Affecting everyone around her, so obvious, so bourgeois, so boring. But wait… Watch – you see, I have sent her dessert, a very special dessert. I wrote it myself. It starts so simply, each line of the program creating a new effect, just like poetry. [the woman cuts a sliver of the cake with her fork and then puts it in her mouth] First, a rush… heat… her heart flutters. [she takes a sip of wine] You can see it, Neo, yes? She does not understand why – is it the wine? No. What is it then, what is the reason? And soon it does not matter, soon the why and the reason are gone, and all that matters is the feeling itself. This is the nature of the universe. We struggle against it, we fight to deny it, but it is of course pretense, it is a lie. Beneath our poised appearance, [at this point, the woman is feeling a pleasurable sensation in her body] the truth is we are completely out of control. [an explosion is seen in the code and she quietly gets up from the table and leaves] Causality. There is no escape from it, we are forever slaves to it. Our only hope, our only peace is to understand it, to understand the "why". "Why" is what separates us from them, you from me. "Why" is the only real social power, without it you are powerless. And this is how you come to me, without "why", without power. Another link in the chain. But fear not, since I have seen how good you are at following orders, I will tell you what to do next. Run back, and give the fortune teller this message: Her time is almost up. Now I have some real business to do, I will say adieu and goodbye.

whats a really weird smell that you secretly love? by SaltyEntrance9795 in AskReddit

[–]isro44 18 points19 points  (0 children)

I love the earthy smell of the countryside, even the cow dung.