pushed_authorization_request sends list authorization_details as a Python repr
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
Direção de pesquisa
Comece com PushedAuthorizationRequests.pushed_authorization_request() e o teste existente test_with_authorization_details mencionado na issue. Compare como RestClient._request() codifica valores de lista com a correção de BackChannelLogin.back_channel_login() em #695. A tarefa estará concluída quando o corpo do formulário contiver authorization_details como um array JSON com aspas duplas quando uma lista for passada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Checklist
- I have looked into the README and have not found a suitable solution or answer.
- I have searched the issues and have not found a suitable solution or answer.
Description
PushedAuthorizationRequests.pushed_authorization_request() posts a form-encoded body (Content-Type: application/x-www-form-urlencoded). RestClient._request() converts the payload with urllib.parse.urlencode(), which turns a list value into its Python repr.
When you pass authorization_details as a list, which the existing test test_with_authorization_details does, the request body contains:
authorization_details=%5B%7B%27type%27%3A+%27money_transfer%27%2C+...
That decodes to [{'type': 'money_transfer', ...}], with single quotes, which is not JSON. RFC 9396 requires authorization_details to be a JSON array, so RAR through PAR does not work with a list.
BackChannelLogin.back_channel_login() had the same problem and was fixed in #695 by calling json.dumps() on list values.
Reproduction
from unittest import mock
from urllib.parse import parse_qs
from auth0.authentication.pushed_authorization_requests import PushedAuthorizationRequests
with mock.patch("requests.request") as req:
req.return_value.status_code = 201
req.return_value.text = '{"request_uri": "urn:x", "expires_in": 30}'
PushedAuthorizationRequests("my.domain.com", "cid", client_secret="s").pushed_authorization_request(
response_type="code",
redirect_uri="https://example.com/cb",
authorization_details=[{"type": "money_transfer"}],
)
print(parse_qs(req.call_args.kwargs["data"])["authorization_details"])
# ["[{'type': 'money_transfer'}]"]
Expected: ['[{"type": "money_transfer"}]'].
Additional context
Workaround: pass authorization_details=json.dumps([...]).
auth0-python version
6.8.0 (main at 9aae3e5)
Python version
3.12
- Linguagem predominante
- Python
- Estrelas
- 578
- Forks
- 190
- Merge médio
- 9h 39min
- PRs com merge (30d)
- 7
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de auth0/auth0-python
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
auth0/auth0-python#852 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
auth0/auth0-python#856 · 4 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
auth0/auth0-python#798 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
auth0/auth0-python#789 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
Todas as issues de auth0/auth0-python
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
Status: Triaged Type: Enhancement
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
canonical/craft-store#448 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
good first issue research size:s skill:numerics sub-issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
SKaiNET-developers/SKaiNET#1372 ·
Mantenedores costumam responder em até 1 dia
-
debt
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
microsoft/vscode-flake8#601 ·
Mantenedores costumam responder em até 1 dia