У меня очень поверхностные знания об 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 авторизации?