Author: rareddy
Date: 2012-05-09 11:53:06 -0400 (Wed, 09 May 2012)
New Revision: 4082
Modified:
branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java
branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java
Log:
TEIID-2037: Moving dis-assosiation to happen correctly in case of error in LoginImpl
Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java
===================================================================
---
branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java 2012-05-09
15:34:45 UTC (rev 4081)
+++
branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java 2012-05-09
15:53:06 UTC (rev 4082)
@@ -148,7 +148,7 @@
String getGssSecurityDomain();
- void associateSubjectInContext(String securityDomain, Subject subject);
+ boolean associateSubjectInContext(String securityDomain, Subject subject);
Subject getSubjectInContext(String securityDomain);
Modified: branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
===================================================================
---
branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java 2012-05-09
15:34:45 UTC (rev 4081)
+++
branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java 2012-05-09
15:53:06 UTC (rev 4082)
@@ -424,13 +424,13 @@
}
@Override
- public void associateSubjectInContext(String securityDomain, Subject subject) {
+ public boolean associateSubjectInContext(String securityDomain, Subject subject) {
Principal principal = null;
for(Principal p:subject.getPrincipals()) {
principal = p;
break;
}
- this.securityHelper.associateSecurityContext(securityDomain,
this.securityHelper.createSecurityContext(securityDomain, principal, null, subject));
+ return this.securityHelper.associateSecurityContext(securityDomain,
this.securityHelper.createSecurityContext(securityDomain, principal, null, subject));
}
@Override
Modified: branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java
===================================================================
--- branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java 2012-05-09
15:34:45 UTC (rev 4081)
+++ branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java 2012-05-09
15:53:06 UTC (rev 4082)
@@ -159,7 +159,7 @@
String user = connProps.getProperty(TeiidURL.CONNECTION.USER_NAME);
String password = connProps.getProperty(TeiidURL.CONNECTION.PASSWORD);
-
+ boolean assosiated = false;
try {
String securityDomain = service.getGssSecurityDomain();
if (securityDomain == null) {
@@ -175,7 +175,7 @@
}
if (result.context.isEstablished()) {
- service.associateSubjectInContext(securityDomain, subject);
+ assosiated = service.associateSubjectInContext(securityDomain, subject);
}
if (!result.context.isEstablished() || !createSession) {
@@ -187,12 +187,14 @@
LogManager.logDetail(LogConstants.CTX_SECURITY, "Kerberos context
established"); //$NON-NLS-1$
//connProps.setProperty(TeiidURL.CONNECTION.PASSTHROUGH_AUTHENTICATION,
"true"); //$NON-NLS-1$
- LogonResult loginInResult = logon(connProps, result.serviceTicket);
- service.clearSubjectInContext();
- return loginInResult;
+ return logon(connProps, result.serviceTicket);
} catch (LoginException e) {
throw new LogonException(e,
RuntimePlugin.Util.getString("krb5_login_failed")); //$NON-NLS-1$
- }
+ } finally {
+ if (assosiated) {
+ this.service.clearSubjectInContext();
+ }
+ }
}
private String updateDQPContext(SessionMetadata s) {
Show replies by thread