Home session expiry maps 401 by exact error-string match (Low)
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 56/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- rust
- Domínio
- backend-api-design, observability, security
Direção de pesquisa
Start with home_projection_token_error in elastos/crates/elastos-server/src/api/gateway_home_runtime.rs, then read grant_bound_token_expiry in gateway_home_token.rs and RoomSessionAuthorization::validate in room_service.rs. Replace the exact message comparison with typed error handling, and log the underlying grant-store error before it is collapsed. Done when inactive or revoked grants map to 401 regardless of message wording and the underlying error is logged.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Severity: Low (fails closed; correctness and observability only)
Found in the security review of #536.
Current behavior
home_projection_token_error (elastos/crates/elastos-server/src/api/gateway_home_runtime.rs) decides 401 by exact string equality:
if err.to_string() == "home launch token auth session is not active" { 401 } else { 500 }
A future rewording of load_active_session_grant, an added .context(...), or any anyhow display change falls through to gateway_internal_error → 500. Access is still denied, but the client loses its "re-authenticate" signal and logs fill with misleading 500s.
Fix
- Use a typed error (an enum such as
HomeTokenError::SessionInactive, orerr.downcast_ref) instead of string equality. - Log the underlying error before the
map_err(|_| …)collapses ingrant_bound_token_expiry(gateway_home_token.rs) andRoomSessionAuthorization::validate(room_service.rs), so a lapsed grant is distinguishable from I/O or state corruption.
Done means
- A lapsed or revoked grant maps to 401 regardless of how the grant loader's message is worded.
- The underlying grant-store error is logged before it is collapsed to an auth failure.
- Linguagem predominante
- Rust
- Estrelas
- 6
- Forks
- 2
- Merge médio
- 1d 3h
- PRs com merge (30d)
- 42
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
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 elastos/elastos-runtime
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
elastos/elastos-runtime#563 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
elastos/elastos-runtime#508 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
elastos/elastos-runtime#436 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
elastos/elastos-runtime#427 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
elastos/elastos-runtime#405 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de elastos/elastos-runtime
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
swc-project/swc-ai-issues#164 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
pop-os/cosmic-player#367 ·
-
good first issue help wanted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
servo/rust-smallvec#873 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
messense/dav-server-rs#82 ·
Mantenedores costumam responder em até 1 dia