2017-01-05 17 views
2

Могу ли я создавать области программно в WSO2 APIM? У меня есть требование, когда пользователь может создавать новые роли через интерфейс и связывать некоторые разрешения с новой ролью. Пользователь не будет использовать веб-интерфейс WSO2; скорее, он будет использовать внутреннее веб-приложение. Для этого мне нужно программно создать Scopes и связать API с ним. Также вручную сопоставляйте области действия с ролями.добавление областей программно в wso2 APIM

Как я могу автоматически создавать области применения через WSO2 APIM? Какие все операции возможны с областями программно? Если это невозможно, как я могу обращаться с такими требованиями через WSO2?

ответ

0

Для этого вы можете использовать Publisher REST APIs.

Во-первых, вам нужно получить определение API-интерфейсов.

curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" 
https://127.0.0.1:9443/api/am/publisher/v0.10/apis/890a4f4d-09eb-4877-a323-57f6ce2ed79b/swagger 

Потрясающая сумма, которую вы получите, будет такой.

{ 
    "swagger":"2.0", 
    "paths":{ 
     "/menu":{ 
    "get":{ 
     "x-auth-type":"Application & Application User", 
     "x-throttling-tier":"Unlimited", 
     "description":"Return a list of available menu items", 
     "parameters":[ 

     ], 
     "responses":{ 
      "200":{ 
       "headers":{ 

       }, 
       "schema":{ 
       "title":"Menu", 
       "properties":{ 
        "list":{ 
         "items":{ 
          "$ref":"#/definitions/MenuItem" 
         }, 
         "type":"array" 
        } 
       }, 
       "type":"object" 
       }, 
       "description":"OK." 
      } 
     } 
    } 
     } 
    }, 
    "schemes":[ 
     "https" 
    ], 
    "produces":[ 
     "application/json" 
    ], 
    "definitions":{ 
     "MenuItem":{ 
      "title":"Pizza menu Item", 
      "properties":{ 
       "price":{ 
        "type":"string" 
       }, 
       "description":{ 
       "type":"string" 
       }, 
       "name":{ 
        "type":"string" 
       }, 
       "image":{ 
        "type":"string" 
       } 
      }, 
      "required":[ 
       "name" 
      ] 
     } 
    }, 
    "consumes":[ 
     "application/json" 
    ], 
    "info":{ 
     "title":"PizzaShackAPI", 
     "description":"This document describe a RESTFul API for Pizza Shack online pizza delivery store.\n", 
     "license":{ 
    "name":"Apache 2.0", 
    "url":"http://www.apache.org/licenses/LICENSE-2.0.html" 
     }, 
     "contact":{ 
    "email":"[email protected]", 
    "name":"John Doe", 
    "url":"http://www.pizzashack.com" 
     }, 
     "version":"1.0.0" 
    } 
} 

Теперь вы можете добавить новую область и присоединить его к ресурсу из API путем обновления файла чванство вы получили.

Новая область добавлена ​​следующим образом.

"x-wso2-security":{ 
    "apim":{ 
     "x-wso2-scopes":[ 
     { 
      "description":"New scope", 
      "name":"new_scope", 
      "roles":"admin", 
      "key":"new_scope" 
     } 
     ] 
    } 
} 

Его можно прикрепить к существующему ресурсу, подобному этому.

"x-scope":"new_scope" 

Тогда полный чванз будет выглядеть следующим образом.

{ 
    "swagger":"2.0", 
    "x-wso2-security":{ 
     "apim":{ 
    "x-wso2-scopes":[ 
     { 
      "description":"New scope", 
      "name":"new_scope", 
      "roles":"admin", 
      "key":"new_scope" 
     } 
    ] 
     } 
    }, 
    "paths":{ 
     "/menu":{ 
    "get":{ 
     "x-auth-type":"Application & Application User", 
     "x-throttling-tier":"Unlimited", 
     "x-scope":"new_scope", 
     "description":"Return a list of available menu items", 
     "parameters":[ 

     ], 
     "responses":{ 
      "200":{ 
       "headers":{ 

       }, 
       "schema":{ 
       "title":"Menu", 
       "properties":{ 
        "list":{ 
         "items":{ 
          "$ref":"#/definitions/MenuItem" 
         }, 
         "type":"array" 
        } 
       }, 
       "type":"object" 
       }, 
       "description":"OK." 
      } 
     } 
    } 
     } 
    }, 
    "schemes":[ 
     "https" 
    ], 
    "produces":[ 
     "application/json" 
    ], 
    "definitions":{ 
     "MenuItem":{ 
    "title":"Pizza menu Item", 
    "properties":{ 
     "price":{ 
      "type":"string" 
     }, 
     "description":{ 
      "type":"string" 
     }, 
     "name":{ 
      "type":"string" 
     }, 
     "image":{ 
      "type":"string" 
     } 
    }, 
    "required":[ 
     "name" 
    ] 
     } 
    }, 
    "consumes":[ 
     "application/json" 
    ], 
    "info":{ 
     "title":"PizzaShackAPI", 
     "description":"This document describe a RESTFul API for Pizza Shack online pizza delivery store.\n", 
     "license":{ 
    "name":"Apache 2.0", 
    "url":"http://www.apache.org/licenses/LICENSE-2.0.html" 
     }, 
     "contact":{ 
    "email":"[email protected]", 
    "name":"John Doe", 
    "url":"http://www.pizzashack.com" 
     }, 
     "version":"1.0.0" 
    } 
} 

Если у вас есть эта развязность в файле с именем «swagger.json», вы можете обновить развязность вашего API, как это.

curl -k -H "Authorization: Bearer b7108a70-3537-34f1-acbb-1c53b99d64dc" 
-F "[email protected];filename=swagger.json" -X PUT https://127.0.0.1:9443/api/am/publisher/v0.10/apis/2c5f05b2-0277-42b2-92c5-862750563661/swagger 

Это обновит ваш API новой областью.

+0

Perfect.Thanks много – Jocket

 Смежные вопросы

  • Нет связанных вопросов^_^