[pyar] requests.get authentificacion en API DRF

Juan Carizza juan.carizza en gmail.com
Lun Abr 10 10:43:57 ART 2017


Hola tenés meter el usuario y password en el header asi: Authorization:
Basic dXN1YXJpbzpwYXNzd29yZA==

Esos caracteres tienen el usuario:password encodeado en Base64.
In [1]: import base64 as bs
In [2]: bs.b64encode("usuario:password")
Out[2]: 'dXN1YXJpbzpwYXNzd29yZA=='
In [3]:

Acá explica cómo se hace
https://en.wikipedia.org/wiki/Basic_access_authentication


Esto funciona siempre y cuando:
   - Tengas la autenticación básica configurada en DRF
   - No tengas BasicAuth en Apache
   - El header Authorization llegue a Django.

Saludos!

El lun., 10 abr. 2017 a las 9:41, Daniel (<dmlistapython en gmail.com>)
escribió:

> El 10 de abril de 2017, 9:37, David Arch <daviddanielarch en gmail.com>
> escribió:
>
> Apache maneja el BasicAuth por defecto, si queres que lo maneje Python
> tenes que meterle un WSGIPassAuthorization en el config del virtual
>
>
> y cómo debería declarar el request (headers) para que me lo reconozca
> apache?
>
>
> host.
>
> 2017-04-10 8:45 GMT-03:00 Daniel <dmlistapython en gmail.com>:
>
> Hola
>  Tengo una view de django rest framework
>
> -------------------------------------------------------
> class ComprobanteViewSet(viewsets.ViewSet):
>     authentication_classes = (SessionAuthentication, BasicAuthentication)
>     permission_classes = (IsAuthenticated,)
>     def list(self, request):
>         queryset = Comprobante.objects.all()
>         serializer = ComprobanteSerializer(queryset, many=True)
>         return Response(serializer.data)
>
>     def retrieve(self, request, pk=None):
>         queryset = Comprobante.objects.all()
>         comprobante = get_object_or_404(queryset, pk=pk)
>         serializer = ComprobanteSerializer(comprobante)
>         return Response(serializer.data)
>
> comprobante_list = ComprobanteViewSet.as_view({"get":"list"})
> comprobante_detail = ComprobanteViewSet.as_view({"get":"retrieve"})
>
> --------------------------------
>
> la que intento consumir con requests (desde otro sitio), pero no pasa la
> autenticación
>
> >>print requests.get("http://www.cyldistribuciones.com.ar/api/misclientes",
> auth=("misusuario", "micontraseña"))
> <Response [403]>
>
> >>> s = requests.Session()
> >>> s.auth = ("misusuario", "micontraseña")
> >>> print s.get("http://www.cyldistribuciones.com.ar/api/misclientes")
> <Response [403]>
>
> Y no se porqué en desarrollo me andaba (bajo el server de desarrollo de
> django)
> en producción está bajo apache, así que estoy pensando que ahí debo apuntar
> pero no se por qué si me autentico usando django anda bien y puedo
> consumir bien la api
>
> ¿tienen alguna sugerencia para darme?
>
>
>
>
>
>
>
> --
> Daniel Malisani
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
>
> --
> Saludos.
> David.
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
>
> --
> Daniel Malisani
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170410/4973e876/attachment.html>


Más información sobre la lista de distribución pyar