Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

424
Visualizações
cualquier solución alternativa para agregar un decorador de autorización de token al punto final en el código auxiliar del servidor swagger python

Sé cómo asegurar el punto final en el matraz, y quiero hacer lo mismo con el código auxiliar del servidor python generado por swagger. Me pregunto cómo puedo integrar la autenticación de token de matraz para el servidor swagger python, por lo que el punto final estará protegido. Podría agregar fácilmente un decorador de autenticación de token al punto final en el matraz. Así es como funcionan las cosas en matraz-restplus y este a continuación funciona totalmente:

 from flask import Flask, request, jsonify from flask_restplus import Api, Resource app = Flask(__name__) authorizations = { 'apikey' : { 'type' : 'apiKey', 'in' : 'header', 'name' : 'X-API-KEY' }, } api = Api(app, security = 'apikey',authorizations=authorizations) def token_required(f): @wraps(f) def decorated(*args, **kwargs): token = None if 'X-API-KEY' in request.headers: token = request.headers['X-API-KEY'] if not token: return {'message' : 'Token is missing.'}, 401 if token != 'mytoken': return {'message' : 'Your token is wrong, wrong, wrong!!!'}, 401 print('TOKEN: {}'.format(token)) return f(*args, **kwargs) return decorated class classResource(Resource): @api.doc(security='apikey') @token_required def get(self): return "this is test"

cómo hacer la autenticación de portador en el código auxiliar del servidor generado por Swagger :

Me pregunto cómo voy a integrar esta autenticación en el código auxiliar del servidor Python generado por Swagger. Así es como comienza el archivo de especificaciones:

 openapi: 3.0.2 info: title: test api version: 1.0.0 servers: - url: /api/v1/ description: Example API Service paths: /about: get: summary: general summary description: get current version responses: '200': description: About information content: application/json: schema: $ref: '#/components/schemas/version' '401': description: Authorization information is missing or invalid. components: securitySchemes: BearerAuth: scheme: bearer type: http security: - BearerAuth: []

controlador en el código auxiliar del servidor swagger python :

actualización: mi nuevo intento :

aquí está default_controller generado por el código auxiliar del servidor swagger python y lo intenté de la siguiente manera:

 import connexion import six @api.doc(security='apikey') @token_required def about_get(): # noqa: E501 return 'do some magic!'

pero falta el botón de authorize . ¿Por qué?

en el código auxiliar del servidor swagger python, también tengo authorization_controller que tiene la siguiente lógica de código:

 from typing import List def check_BearerAuth(token): return {'test_key': 'test_value'}

actualizar :

aquí en el código auxiliar del servidor swagger python. about_get() es un punto final y no está protegido en este momento. ¿Cómo podemos asegurar eso como lo hicimos en el matraz? ¿cualquier pensamiento?

¿Cómo puedo agregar la autenticación de token de matraz anterior a about_get() en el código auxiliar del servidor swagger python? ¿Hay alguna manera de hacer esto? ¿alguna idea?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Actualizar

Aquí hay un ejemplo de yaml para usar JWT como formato portador: https://github.com/zalando/connexion/blob/master/examples/openapi3/jwt/openapi.yaml

Después de generar el servidor de matraz, en swagger-ui puede encontrar el botón 'Autorizar'. Y si ejecuta /secret antes de 'Autorizar' obtendrá un error 401.

Entonces, para su situación, debe cambiarlo a:

 openapi: 3.0.2 info: title: test api version: 1.0.0 servers: - url: /api/v1/ description: Example API Service paths: /about: get: summary: general summary description: get current version security: - jwt: ['secret'] responses: '200': description: About information content: application/json: schema: type: string components: securitySchemes: jwt: type: http scheme: bearer bearerFormat: JWT x-bearerInfoFunc: app.decode_token

Por lo tanto, después de haber instalado connexion[swagger-ui] e iniciar el servidor mediante python -m swagger_server . Luego, navegue a http://0.0.0.0:8080/api/v1/ui/ , puede probar que la autenticación funciona correctamente. Si llama a /about antes de autorizar, obtendrá un error 401.


Para agregar autenticación desde el código:

 from flask_restx import Api authorizations = { 'Bearer Auth': { 'type': 'apiKey', 'in': 'header', 'name': 'Authorization' }, } api = Api(app, security='Bearer Auth', authorizations=authorizations)

Por cierto, es mejor migrar el matraz_restplus a matraz_restx, ya que el matraz_restplus ya no se mantendrá.

Fuente

https://github.com/noirbizarre/flask-restplus/issues/398#issuecomment-444336893

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda