<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div>First off, let me say
THANK YOU to all of you who've helped make FreeIPA what it is. I think
it's a fantastic project and it's amazing what it has achieved.<br><br></div>Second
off, I'm still quite new to FreeIPA, especially the internals. This
includes Kerberos. I'm also very very limited at Python (I come from a
PHP background - please don't hold it against me). I have toyed around
with LDAP a little bit before looking at FreeIPA.<br><br></div><div>After
re-reading this e-mail I think it'd be important to note here at the
top that my focus is on web-based apps and non-kerberized clients. The
web app server would be an IPA client. I don't foresee a lot of
terminal-based stuff going on, aside from potential admin CLI tasks (for
the web-based app).<br></div><div><br></div><div>I apologize in advance
for the length of this e-mail. I have searched, a lot, to try and
answer my own questions. That's actually how I found FreeIPA in the
first place. I've looked at the site/wiki, the mailing list archive,
and the Internet in general. But I've been unable to find a solution,
or suggestions, which achieves exactly what I'm looking for. It may be
that I'm just using the wrong terminology and/or getting lost in the
buzzwords. <br></div><div><br></div>What I'm trying to figure out is if
there is a way to centrally manage sessions, in addition to everything
else FreeIPA currently does. I'm not necessarily just talking about
WebUI sessions, I'd like external web apps to be able to make use of it
too. And, I'd like to be able to manage them via the WebUI. <br><br></div>For
example, let's say "joe" logs in to the WebUI (OR another web app tied
to FreeIPA). Now, on another computer, "admin" logs into the WebUI.
Can admin have a way to see that "joe" logged in, and, if need be, kill
Joe's session?<br><br></div>I'd like for it to maintain history. For
each login/session, I'd like to see who logged in, when, from where,
what their last access was, when they logged out (or if their session
timed out), and the logout reason (manual logout, session timeout, or
admin intervention).<br><br>But like I said, I'm not just looking for WebUI sessions.<br><br></div>Let's
say I create a web app. I put it on a machine which is an IPA client.
Thanks to the wealth of documentation and options, I have a variety of
methods to achieve authentication. FreeIPA makes this great, and for
that I'm thankful. However, in most of the documentation, it just says
"create the session" cookie, and the rest is left as an exercise to the
reader. I'm familiar with web apps and have implemented session
management before. What I'd love to see is FreeIPA to be able to handle
not just the auth but also the session management. <br><br></div><div>Why?
Because I'd not like to have to re-invent the wheel. And I'm trying to
see if there is already some method to do this that I'm just
fundamentally missing. Or at least if there are enough pieces that I
could put together to make it happen.<br></div><div><br></div>For "fun",
I've tried to set up auth using different methods. I've successfully
set it up using intercept_form_submit_module and
lookup_identity_module. That's pretty neat, works great for auth. But,
as far as I can tell, this method doesn't create a session or login
trail in the memcached DB. In fact, I can't really find any trail aside
from the Kerberos logging messages in /var/log/krbkdc.log.<br><br></div>I've
also used Tobias Sette's php-freeipa from GitHub. That works great
too... for auth. And since that uses the JSON API, it looks like it
does create a record in the memcached DB. So I suppose this could be
one way in, maybe by a FreeIPA plugin?<br><br></div>I guess I'm running
in circles because then again I think... "what about pure Kerberos"
clients... or those using intercept_form_submit_module? I'm not
familiar with PAM. But from what I can tell, I assume there is a way to
add a "pluggable" module for it too. But on the server? i.e., if a
Kerberos session is established, is there a way, via PAM (or something
else?) to log that session to the FreeIPA server? I think this is
kinda what Kerberos is trying to get away from, but for the use cases
I'm thinking of, it'd be a big feature. In my searching I've seen
things like nss_mysql which look interesting, but of course wouldn't
mesh with the FreeIPA WebUI memcached method.<br><br></div><div>Speaking
of which, I know that memcached is not by any means a permanent session
log, and I understand it's not intended to be. So would this go into
the LDAP tree? Would this clog it up too much? I'm looking to store a
year of info... or more depending on the scenario.<br></div><div><br></div></div>I've
briefly looked at the Apache Shiro project. I'm not a Java guy, but
from I'm reading it kind of has the right idea. It even notes that the
session management portions can be accessed from other apps (on other
machines) and not necessarily from Java. But due to the whole thing
being a mostly-Java product, I get lost far too easily. If this were
already in FreeIPA I think that's kind of what I'm looking for.<br><br>A single source of session information on the server. Along with the
ability to view/search it via the FreeIPA WebUI (which I assume would
mean it'd come from the JSON API).<br><br><div>For
someone creating a new app from scratch, this would not only cover the
user/IdM and auth items, but also session management, and allow for more
administrative control (kill a session administratively). I think this
would really decrease the barrier to entry and give app authors a
"known good" path to follow. Especially smaller, domain- or
niche-specific projects. <br><br></div><div>I've looked at the FreeIPA session recording page (<a href="http://www.freeipa.org/page/Session_Recording" target="_blank">http://www.freeipa.org/page/<wbr>Session_Recording</a>).
That looks neat. However, if I'm reading it right, it's just for
terminal sessions. It mentions being able to record login info, but
being a newbie I can't quite follow exactly how it's achieving this goal
(is that part all a function of tlog?).<br><br></div>Anyway,
again, I apologize for this very long e-mail. Am I totally barking up
the wrong tree? Is this something FreeIPA can do and I just haven't
figured out how? Or would it require far too much customization and/or
be too far outside of the core functionality? Any hints, suggestions,
or even criticism would be appreciated.<br><br></div></div>