Как мне записать путь с безопасностью, но без операций? - PullRequest
1 голос
/ 23 января 2020

Мои API разделены между некоторыми c и некоторыми безопасными маршрутами. Все безопасные маршруты являются потомками /secured/, поэтому я хочу отметить это один раз вместо того, чтобы отмечать каждый рабочий путь как безопасный.

, поэтому у меня есть такие маршруты, как

/ // nothing here
/healthcheck //open route, can be used to make sure API is up
/login              //generates the cookie and tokens
/secured/users      //requires login and lists users
/secured/resources  //requires login and lists resources
/secured/others     //etc.

В моем API есть промежуточное ПО для проверки входа в систему по пути secured, поэтому все, что ниже, должно проверять куки и токены. Поэтому я хочу, чтобы мои документы совпадали. Я знаю, что могу пометить безопасность на root или на каждой конечной точке, но как я могу пометить ее только один раз для secured пути?

Я пытаюсь что-то вроде:

paths:
  /healthcheck:
    get:
      [the get activity]
  /login:
    post:
      [yada yada yada]
 /secured:
    security:
      [security rules]
 /secured/users:
    get:
    post:
    put:
    delete:

но это похоже на ошибки. Любые мысли о том, как я могу сделать это sh за исключением простого обеспечения безопасности на каждом маршруте и операции?

1 Ответ

1 голос
/ 23 января 2020

Я знаю, что могу пометить защиту на root или на каждой конечной точке, но как я могу пометить ее только один раз для secured пути?

Это не так возможно, главным образом потому, что в OpenAPI нет понятия подпутей. В терминах OpenAPI ваш API фактически не имеет пути /secured - он имеет /secured/users, /secured/resources et c.

Если ваш API имеет больше защищенных операций, чем небезопасных, вы можете определите security глобально и отключите защиту для операций, которые ее не используют:

security:
  - mySecurity: []

paths:
  /healthcheck:
    get:
      security: []  # <---
      ...
  /login:
    post:
      security: []  # <---
      ...
...