[JBoss JIRA] (TEIID-3380) Simplify Kerberos configuration with Embedded
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3380?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-3380:
---------------------------------------
I think we could go further to:
{code}
public abstract class SecurityHelper {
public abstract Object associateSecurityContext(Object context);
public abstract void clearSecurityContext();
public abstract Object getSecurityContext();
public abstract Subject getSubjectInContext(Object securityContext, String securityDomain);
public abstract Object authenticate(String securityDomain, String userName, String baseUserName, Credentials credentials, String applicationName)
throws LoginException;
public abstract GSSResult neogitiateGssLogin(String securityDomain, byte[] serviceTicket) throws LoginException;
public boolean sameSubject(String securityDomain, Object context, Subject subject) {
...
{code}
Such that there are just 6 methods that need to be implemented. Alternatively we could leave it as an interface and move the sameSubject method off. Either way it can be rewritten to just use other methods already on the SecurityHelper. Also we could just remove the use of the TeiidLoginContext and move the GSSResult into the org.teiid.security package.
Also we seem to have issues with the old \@domain login logic in that the login name that we pass to the full username in the Principle for authentication, when it should just the base username - and we should be escaping the username that is put in the session.
Let me know if you are ok with changes like this.
> Simplify Kerberos configuration with Embedded
> ---------------------------------------------
>
> Key: TEIID-3380
> URL: https://issues.jboss.org/browse/TEIID-3380
> Project: Teiid
> Issue Type: Quality Risk
> Components: Embedded
> Reporter: Steven Hawkins
> Assignee: Ramesh Reddy
> Fix For: 8.11
>
>
> The current code requires overriding the embedded server to install a custom session service. It may be good to have some base level of functionality built-in and/or just delegated to the security helper.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months
[JBoss JIRA] (TEIID-3267) OPTION NOCACHE causes ConcurrentModificationException
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/TEIID-3267?page=com.atlassian.jira.plugin... ]
RH Bugzilla Integration commented on TEIID-3267:
------------------------------------------------
Jan Stastny <jstastny(a)redhat.com> changed the Status of [bug 1175653|https://bugzilla.redhat.com/show_bug.cgi?id=1175653] from MODIFIED to VERIFIED
> OPTION NOCACHE causes ConcurrentModificationException
> -----------------------------------------------------
>
> Key: TEIID-3267
> URL: https://issues.jboss.org/browse/TEIID-3267
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 8.4.3, 8.7.1, 8.9
> Reporter: Hisanobu Okuda
> Assignee: Steven Hawkins
> Fix For: 8.7.1, 8.10
>
> Attachments: test.csv, test.vdb
>
>
> I have the following virtual procedure.
> {code}
> CREATE VIRTUAL PROCEDURE
> BEGIN
> DECLARE string VARIABLES.strSql = 'select v1.id, v2.ccc2 from vvv1.vvv as v1, vvv2.vvv as v2 where v1.id=v2.id option nocache v1';
> EXECUTE IMMEDIATE VARIABLES.strSql AS id string, name string;
> END
> {code}
> When I specify no argument for 'option nocache', it works. But, when I specify a view name as an argument for 'option nocache', it throws ConcurrentModificationException.
> {code}
> 17:34:04,285 ERROR [org.teiid.PROCESSOR] (Worker0_QueryProcessorQueue0) TEIID30019 Unexpected exception for request nSVB2nm4gO3M.0: java.util.ConcurrentModificationException
> at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859) [rt.jar:1.7.0_45]
> at java.util.ArrayList$Itr.next(ArrayList.java:831) [rt.jar:1.7.0_45]
> at org.teiid.query.optimizer.relational.RelationalPlanner.generatePlan(RelationalPlanner.java:609) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.addNestedCommand(RelationalPlanner.java:1173) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.buildTree(RelationalPlanner.java:1071) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.createQueryPlan(RelationalPlanner.java:904) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.createQueryPlan(RelationalPlanner.java:863) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.generatePlan(RelationalPlanner.java:619) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:226) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:159) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.proc.ExecDynamicSqlInstruction.process(ExecDynamicSqlInstruction.java:186) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.proc.ProcedurePlan.processProcedure(ProcedurePlan.java:356) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.proc.ProcedurePlan.nextBatchDirect(ProcedurePlan.java:283) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.proc.ProcedurePlan.nextBatch(ProcedurePlan.java:257) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.relational.PlanExecutionNode.nextBatchDirect(PlanExecutionNode.java:118) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:149) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:149) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:157) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:139) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:269) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214) [teiid-engine-8.4.1-redhat-7.hokuda.jar:8.4.1-redhat-7]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months
[JBoss JIRA] (TEIID-3380) Simplify Kerberos configuration with Embedded
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3380?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-3380:
---------------------------------------
It seems like the AuthenticationHandler is intimately tied to the SecurityHelper. For example if we remove JBossSessionService extending SessionServiceImpl, then except for the getBaseUsername call we are effectively just making calls to the SecurityHelper. Should AuthenticationHandler/SecurityHelper be simplified? For example createSecurityContext is only called by the AuthenticationHelper methods and getSecurityDomain is unused.
> Simplify Kerberos configuration with Embedded
> ---------------------------------------------
>
> Key: TEIID-3380
> URL: https://issues.jboss.org/browse/TEIID-3380
> Project: Teiid
> Issue Type: Quality Risk
> Components: Embedded
> Reporter: Steven Hawkins
> Assignee: Ramesh Reddy
> Fix For: 8.11
>
>
> The current code requires overriding the embedded server to install a custom session service. It may be good to have some base level of functionality built-in and/or just delegated to the security helper.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months
[JBoss JIRA] (TEIID-3359) Allow more control over odata layer caching
by Ramesh Reddy (JIRA)
[ https://issues.jboss.org/browse/TEIID-3359?page=com.atlassian.jira.plugin... ]
Ramesh Reddy resolved TEIID-3359.
---------------------------------
Labels: Alpha1 (was: )
Resolution: Done
For the OData that are paged,
1) Now in their "skipToken" will include the "sessionid" from the initial connection they used to retrieve the results.
2) The query string will be appended with a comment that contains sessionid. By doing this if there are two users who issue a same query, but are expecting different results, will not be served from the stale cache.
I do think we need a way explicitly expire cache, when scrolling through the page is came to a end, or a resultset with less than BATCH_COUNT amount of results. This way Teiid can proactively clean/flush them up?
> Allow more control over odata layer caching
> -------------------------------------------
>
> Key: TEIID-3359
> URL: https://issues.jboss.org/browse/TEIID-3359
> Project: Teiid
> Issue Type: Enhancement
> Components: OData
> Affects Versions: 8.7
> Reporter: Steven Hawkins
> Assignee: Ramesh Reddy
> Labels: Alpha1
> Fix For: 8.11
>
>
> The caching is always performed at a user level and for each query. Consumers may need to localize the caching affect only to paging results and scope only to that interaction, rather than for all users.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months
[JBoss JIRA] (TEIID-3395) USER and ROLE tables should be exposed as System Tables
by Tom Johnston (JIRA)
Tom Johnston created TEIID-3395:
-----------------------------------
Summary: USER and ROLE tables should be exposed as System Tables
Key: TEIID-3395
URL: https://issues.jboss.org/browse/TEIID-3395
Project: Teiid
Issue Type: Feature Request
Components: Server
Reporter: Tom Johnston
Assignee: Steven Hawkins
LIke most databases (i.e. Oracle has DBA_USERS and DBA_ROLES) TeiiD should have the same and be sourced from whatever security domain is being used.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months
[JBoss JIRA] (TEIID-3362) Additional language constructs for arrays
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3362?page=com.atlassian.jira.plugin... ]
Steven Hawkins resolved TEIID-3362.
-----------------------------------
Resolution: Done
We already added support for values with multiple row values -
VALUES (1, 2), (3, 4)
To provide a quick way of producing rows.
So for this issue a new system procedure ARRAYITERATE was added -
select * from (call ARRAYITERATE((1, 2, 3, 4, 5))) as x
would produce 5 single column rows. However for simplicity it is weakly typed. It expects an object[] parameter, and produces an object result. So more than likely a cast will be needed in most scenarios.
> Additional language constructs for arrays
> -----------------------------------------
>
> Key: TEIID-3362
> URL: https://issues.jboss.org/browse/TEIID-3362
> Project: Teiid
> Issue Type: Enhancement
> Components: Query Engine
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Fix For: 8.11
>
>
> Additional handling for arrays, such as an unnest function (columns to rows), a 2 dimensional form or arraytable, array concat etc. would be beneficial.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 9 months