[ 
https://issues.apache.org/jira/browse/SOLR-13900?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuliia Sydoruk updated SOLR-13900:
----------------------------------
    Description: 
Permissions indexes in security.json file do not correspond to indexes while 
deleting.

The line 

{{(141) setIndex(p);}}

in 
[https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java]
 makes indexes renumber before deleting and it leads to wrong behavior.

*USE CASE 1:*

There are 2 new permissions added to security.json (with indexes 13 and 14):
{code:java}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
      {
        "collection":"<collectionName>",
        "path":"/schema/*",
        "role":"test-role",
        "index":13},
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}
....
{code}
Step 1: remove the permission with index=13; result: permission is deleted 
correctly, security.json is next:
{code:java}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12,
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}
....
{code}
Step 2: try to remove the permission with index=14; result: "No such index: 14" 
error is returned.

*USE CASE 2:*

There are 3 new permissions added to security.json (with indexes 13, 14 and 15):
{code:json}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
      {
        "collection":"<collectionName>",
        "path":"/schema/*",
        "role":"test-role",
        "index":13},
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}, 
      { 
        "path":"/admin/collections", 
        "params":\{"collection":["anotherTestCollection"]}, 
        "role":"test-role", 
        "index":15}
....
{code}
Step 1: remove the permission with index=13; result: permission is deleted 
correctly, security.json becomes next:
{code:json}
....
       { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
       {
        "path":"/admin/collections", 
        "params":{"collection":["testCollection"]}, 
        "role":"test-role", "index":14}, 
       { 
        "path":"/admin/collections", 
        "params":{"collection":["anotherTestCollection"]}, 
        "role":"test-role", 
        "index":15}
....
{code}
 
 Step 2: try to remove the permission with index=14; result: permission with 
index 15 is deleted, which is *wrong*

  was:
Permissions indexes in security.json file do not correspond to indexes while 
deleting.

The line 

{{(141) setIndex(p);}}

in 
[solr/security/AutorizationEditOperation.java|[https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java]]
 makes indexes renumber before deleting and it leads to wrong behavior.

*USE CASE 1:*

There are 2 new permissions added to security.json (with indexes 13 and 14):
{code:java}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
      {
        "collection":"<collectionName>",
        "path":"/schema/*",
        "role":"test-role",
        "index":13},
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}
....
{code}
Step 1: remove the permission with index=13; result: permission is deleted 
correctly, security.json is next:
{code:java}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12,
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}
....
{code}
Step 2: try to remove the permission with index=14; result: "No such index: 14" 
error is returned.

*USE CASE 2:*

There are 3 new permissions added to security.json (with indexes 13, 14 and 15):
{code:json}
....
      { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
      {
        "collection":"<collectionName>",
        "path":"/schema/*",
        "role":"test-role",
        "index":13},
      {
        "path":"/admin/collections",
        "params":{"collection":["testCollection"]},
        "role":"test-role",
        "index":14}, 
      { 
        "path":"/admin/collections", 
        "params":\{"collection":["anotherTestCollection"]}, 
        "role":"test-role", 
        "index":15}
....
{code}
Step 1: remove the permission with index=13; result: permission is deleted 
correctly, security.json becomes next:
{code:json}
....
       { 
        "role":"admin", 
        "name":"schema-edit", 
        "index":12},
       {
        "path":"/admin/collections", 
        "params":{"collection":["testCollection"]}, 
        "role":"test-role", "index":14}, 
       { 
        "path":"/admin/collections", 
        "params":{"collection":["anotherTestCollection"]}, 
        "role":"test-role", 
        "index":15}
....
{code}
 
 Step 2: try to remove the permission with index=14; result: permission with 
index 15 is deleted, which is *wrong*


> Permissions deleting works wrong
> --------------------------------
>
>                 Key: SOLR-13900
>                 URL: https://issues.apache.org/jira/browse/SOLR-13900
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Authorization, security
>            Reporter: Yuliia Sydoruk
>            Priority: Major
>
> Permissions indexes in security.json file do not correspond to indexes while 
> deleting.
> The line 
> {{(141) setIndex(p);}}
> in 
> [https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/security/AutorizationEditOperation.java]
>  makes indexes renumber before deleting and it leads to wrong behavior.
> *USE CASE 1:*
> There are 2 new permissions added to security.json (with indexes 13 and 14):
> {code:java}
> ....
>       { 
>         "role":"admin", 
>         "name":"schema-edit", 
>         "index":12},
>       {
>         "collection":"<collectionName>",
>         "path":"/schema/*",
>         "role":"test-role",
>         "index":13},
>       {
>         "path":"/admin/collections",
>         "params":{"collection":["testCollection"]},
>         "role":"test-role",
>         "index":14}
> ....
> {code}
> Step 1: remove the permission with index=13; result: permission is deleted 
> correctly, security.json is next:
> {code:java}
> ....
>       { 
>         "role":"admin", 
>         "name":"schema-edit", 
>         "index":12,
>       {
>         "path":"/admin/collections",
>         "params":{"collection":["testCollection"]},
>         "role":"test-role",
>         "index":14}
> ....
> {code}
> Step 2: try to remove the permission with index=14; result: "No such index: 
> 14" error is returned.
> *USE CASE 2:*
> There are 3 new permissions added to security.json (with indexes 13, 14 and 
> 15):
> {code:json}
> ....
>       { 
>         "role":"admin", 
>         "name":"schema-edit", 
>         "index":12},
>       {
>         "collection":"<collectionName>",
>         "path":"/schema/*",
>         "role":"test-role",
>         "index":13},
>       {
>         "path":"/admin/collections",
>         "params":{"collection":["testCollection"]},
>         "role":"test-role",
>         "index":14}, 
>       { 
>         "path":"/admin/collections", 
>         "params":\{"collection":["anotherTestCollection"]}, 
>         "role":"test-role", 
>         "index":15}
> ....
> {code}
> Step 1: remove the permission with index=13; result: permission is deleted 
> correctly, security.json becomes next:
> {code:json}
> ....
>        { 
>         "role":"admin", 
>         "name":"schema-edit", 
>         "index":12},
>        {
>         "path":"/admin/collections", 
>         "params":{"collection":["testCollection"]}, 
>         "role":"test-role", "index":14}, 
>        { 
>         "path":"/admin/collections", 
>         "params":{"collection":["anotherTestCollection"]}, 
>         "role":"test-role", 
>         "index":15}
> ....
> {code}
>  
>  Step 2: try to remove the permission with index=14; result: permission with 
> index 15 is deleted, which is *wrong*



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to