03-25-2011 10:53 AM
03-28-2011 05:29 AM
08-20-2011 06:54 AM
08-24-2011 04:16 AM
09-09-2011 01:08 AM
09-09-2011 04:27 AM
That is a very common problem for JavaEE applications that are "security-enabled" and also very useful for auditing.Authentication and Auditing are two different but (partly) related things
Most companies I've worked in then decided to not secure too much, which is kind of *WTF?!*.You should never secure 'to much', you should secure 'enough'.
09-09-2011 09:02 PM
No. Really? … just kidding… 😉That is a very common problem for JavaEE applications that are "security-enabled" and also very useful for auditing.Authentication and Auditing are two different but (partly) related things
Most companies I've worked in then decided to not secure too much, which is kind of *WTF?!*.You should never secure 'to much', you should secure 'enough'.
So… why not make sure you trust the application (give IT a login) and have it pass the information on who's behalf it is doing something to the external system and use that info in auditing.
Sounds weird? Sounds like 'not enough security'? Well it is *not*, serious auditors of insurance companies accept this, while they would *no*' accept storing credentials of others in a system, readable, usable etc. That would be a major issue if stolen.
09-12-2011 03:53 PM
Hm, every application where someone logs into has access to the clear-text password.The application should not have access to it, just the authentication layer.
The fact that "serious auditors of insurance companies accept this" is only because it is common practice as well as a trade-off in security vs. development time (vs. investment of money vs. interest of management in this).Sorry, no. I is accepted because it is a valid pattern. It is not that there is *no* authentication, since the application authenticates itself against external systems instead 're-authenticating' the end user.
It's sad, but "high-security" is still not "high-priority" in the heads of management, even nowadays.This is not true in general. In many companies I worked with it does have highpriority and things do get implemented correctly. One of the major things with security in relation to developing applications is to keep things a simple as possible so mistakes are easily caught.
09-13-2011 03:40 AM
I totally agree here, however, every Java web-application actually has, although you have to unwrap some interfaces, unless you do the authentication before entering the Java space. That's why initially the clear-text password transported in some request has been stored using a char array, which can be deleted and overwritten in memory, hence can be really get rid of once authentication is done to avoid leaking passwords in memory.Hm, every application where someone logs into has access to the clear-text password.The application should not have access to it, just the authentication layer.
I see your point. However, I don't consider a password to be a serious information of trust. The only thing that prevents me from replacing password-based authentication with client-certificate-based is because it is common practice and hence validates itself as a use case I have to cover.The fact that "serious auditors of insurance companies accept this" is only because it is common practice as well as a trade-off in security vs. development time (vs. investment of money vs. interest of management in this).Sorry, no. I is accepted because it is a valid pattern. It is not that there is *no* authentication, since the application authenticates itself against external systems instead 're-authenticating' the end user.
Nice to hear, really. I have made experience on the other end.It's sad, but "high-security" is still not "high-priority" in the heads of management, even nowadays.This is not true in general. In many companies I worked with it does have highpriority and things do get implemented correctly. One of the major things with security in relation to developing applications is to keep things a simple as possible so mistakes are easily caught.
The 'solutions' like te ones you describe are equally and mor insecure since the *real* user cridentials are stored in a central system, not under the users control. Yes, you can legally make this central storage en extension of the user space, but that adds additional complexity to a solution that already is more complex.Yes, I know that there is a problem in there by concept and I really would have to take care that misuse is being prevented.
Using wss profiles like a saml bases sso solution and use those tokens… Still, (ab) using real credentials does not feel right. For several reasons… They have a limited lifespan, so what if one expires? Or if the user logs out in between, then the token also becomes invalid.Yes, it's simple. However, it's not so simple in my case and simply wouldn't work.
Authenticating the application (trusting it) and having it pass the id of the user on who's behalf something is done, is safe and simple.
09-13-2011 04:36 AM
I see your point. However, I don't consider a password to be a serious information of trust. The only thing that prevents me from replacing password-based authentication with client-certificate-based is because it is common practice and hence validates itself as a use case I have to cover.Then I'm lucky, we had (and have both). But with a decent sso solution, it does not make a difference from the application point of view.
Did you ever happen to secure your EJB's using either standard configuration or annotations? The problem is simple: an EJB is secured and certain methods only accessible to authenticated users that belong to a certain group/role. And exactly here is the problem: the user-to-roles mapping, which I would have to transport as well and somehow "set" them along with the user itself before invoking such a secured EJB.Yes and no. What we did in an early stage is to get rid of the 'dogma' that at the ejb level, individual users should be authenticated. That is where we authenticated the calling application (if it was a remote call). The user (and his roles) is passed on in a standardized way (SAML token), not via methods, but via threadlocal (a strong concept! appservers use it themselves all the time). But something like http://docs.jboss.org/seam/3/security/latest/reference/en-US/html/ is also an option
So, to access such an EJB when a process takes hours, days, or even weeks, I have to authenticate the real way.This is where we differ in view. I do not need real authentication of the enduser, I need the guarantee that the calling application can be trusted that what it says it is working on behalf of is true.
If I only had processes that deal with rather short-running non-background transactions initiated by e.g. user-tasks, I could simply re-use the authenticated request of the user that completed a user-task.…. if only…. 🙂
However, in my current case I have a distributed system that is highly automatic using timers to pick up tasks for a user.ours is to (or rather 'theirs' since I do not work there anymore and where I work now, we will be putting these kinds of concepts into place comming months)
Yes, it's simple. However, it's not so simple in my case and simply wouldn't work.I there are existing systems out of your control then I can imagine. If there are existing systems within your control, I'd seriously think of adapting those 😉
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.