Объединение OAuth2 KeyCloak с Connexion (с использованием OpenAPI v3) - PullRequest
0 голосов
/ 14 февраля 2020

У меня очень поверхностные знания об OAuth, я играл с приложением Flask и решил, что это был интересный кандидат для использования OAuth2.0.

Мой конкретный c программный стек Connexion в бэкэнде и KeyCloak в качестве поставщика OAuth / управления пользователями. Но я предполагаю, что я испортил самое элементарное определение OAuth2 <-> OpenAPI.

Мое определение OpenAPI до сих пор следующее:

openapi: "3.0.0"
info:
  # ...

components:
  securitySchemes:
    oAuthSample:
      type: oauth2
      description: (...)
      # The following is connexion specific and I am not sure what it exactly is
      x-tokenInfoUrl: http://localhost:5000/tokeninfo
      flows:
        authorizationCode:
          authorizationUrl: http://localhost:8080/auth/realms/master/protocol/openid-connect/auth
          tokenUrl: http://localhost:8080/auth/realms/master/protocol/openid-connect/token          
          scopes:
            read_pets: read your pets

paths:
  /pets:
    get:
      summary: List all pets
      operationId: api.list_pets
      tags:
        - pets
      parameters:
        - # ...
      security: 
        - oAuthSample: 
          - read_pets

Моя первая проблема заключается в том, что я получаю 401 ошибки при выполнении GET для / api / v1 / pets, но я ожидал некоторого перенаправления - вот как должен работать OAuth, верно?

x-tokenInfoUrl (или x-tokenInfoFunc в этом отношении) неясны Я прочитал документацию , но она слишком абстрактна, и я не понимаю, что она должна проверять. Разве он не установлен через другой URL авторизации?

...