Mikhail Petrov created IGNITE-15101:
---------------------------------------

             Summary:  Ignite tasks run in a security context other than the 
initiator's security context
                 Key: IGNITE-15101
                 URL: https://issues.apache.org/jira/browse/IGNITE-15101
             Project: Ignite
          Issue Type: Improvement
            Reporter: Mikhail Petrov
            Assignee: Mikhail Petrov


Ignite tasks run in a security context other than the initiator's security 
context.

Reproducer:

{code:java}
public class TaskSecurityContextTest extends AbstractSecurityTest {
    /** */
    private static final String TASK_NAME = 
"org.apache.ignite.internal.processors.security.events.TaskTest$TestComputeTask";

    /** {@inheritDoc} */
    @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
        return super.getConfiguration(igniteInstanceName)
            .setClientConnectorConfiguration(
                new ClientConnectorConfiguration().setThinClientConfiguration(
                    new 
ThinClientConfiguration().setMaxActiveComputeTasksPerConnection(1)));
    }

    /** */
    @Test
    public void test() throws Exception {
        IgniteEx ignite = startGridAllowAll("srv");

        String login = "test";

        IgniteClient cli = Ignition.startClient(new ClientConfiguration()
            .setAddresses(Config.SERVER)
            .setUserName(login)
            .setUserPassword("")
        );

        UUID subjId = 
ignite.context().security().authenticatedSubjects().stream()
            .filter(subj -> subj.login().equals(login))
            .findFirst()
            .get()
            .id();

        cli.compute().execute(TASK_NAME, subjId);
    }

    /** Test compute task. */
    public static class TestComputeTask extends ComputeTaskAdapter<UUID, Void> {
        /** {@inheritDoc} */
        @Override public @NotNull Map<? extends ComputeJob, ClusterNode> map(
            List<ClusterNode> subgrid,
            @Nullable UUID secSubjId
        ) throws IgniteException {
            return F.asMap(new ComputeJob() {
                /** */
                @IgniteInstanceResource
                private IgniteEx ignite;

                @Override public void cancel() {
                    // No-op.
                }

                @Override public Object execute() throws IgniteException {
                    assertEquals(secSubjId, 
ignite.context().security().securityContext().subject().id());

                    return null;
                }
            }, subgrid.get(0));
        }

        /** {@inheritDoc} */
        @Override public @Nullable Void reduce(List<ComputeJobResult> results) 
throws IgniteException {
            return null;
        }
    }
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to