Alexander
(Alexander Barrios)
6월 27, 2022, 8:58오후
1
안녕하세요 ! 오후 인사드립니다. OpenID Connect 플러그인에 대해 질문이 있습니다.
Discourse에서 ID Uruguay(정부의 OpenID Connect “제공자”)를 사용하려고 합니다. 테스트 서버에 가입했고, 필요한 데이터를 받았습니다.
콜백을 제외한 모든 흐름이 정상적으로 작동하는 것 같습니다. 그런데 JWT에 포함된 Issuer가 discovery 문서의 값과 일치하지 않는 것 같습니다.
이미 Support에 문의했는데, 기본적으로 오류가 Discourse 측에서 발생한다고 하더군요(저는 그렇게 생각하지 않습니다).
"excepted issuer"에 다른 값을 추가하는 방법이 있을까요?
Discovery 문서: https://auth-testing.iduruguay.gub.uy/oidc/v1/.well-known/openid-configuration
로그
OIDC Log: Loaded JWT
---
iss: https://auth-testing.iduruguay.gub.uy/oidc/v1
sub: '7630'
aud: '862271'
exp: 1656363519
iat: 1656362919
auth_time: 1656362918
amr:
- urn:iduruguay:am:password
acr: urn:iduruguay:nid:1
nonce: 94d556d732db0db8dff0e09a174c27f2943cfe1740845abf537ff768e96c8ddf
at_hash: eokMw_xDlqb6cXB-DkDA_A
pais_documento:
codigo: uy
nombre: Uruguay
tipo_documento:
codigo: 68909
nombre: C.I.
numero_documento: '54682086'
email: alexander.barrios@estudiante.ceibal.edu.uy
email_verified: true
name: Yanquis Alexander Barrios Espíndola
given_name: Yanquis Alexander
family_name: Barrios Espíndola
nickname: uy-ci-54682086
idp: Usuario gub.uy
(oidc) Authentication failure! jwt_decode_failed: JWT::InvalidIssuerError, Invalid issuer. Expected ["https://auth-testing.iduruguay.gub.uy"], received https://auth-testing.iduruguay.gub.uy/oidc/v1
미리 감사드립니다!
RGJ
(Richard - Communiteq)
6월 27, 2022, 10:10오후
2
음.
발견 문서(discovery document)의 위치를 보면, 발견 문서는 발급자(issuer)에 /.well-known/openid-configuration이 추가된 것이므로, 발급자는 https://auth-testing.iduruguay.gub.uy/oidc/v1이라고 가정해야 합니다.
그러나 문서 자체에는 issuer "https://auth-testing.iduruguay.gub.uy"라고 되어 있습니다.
그리고 OpenID Connect Discovery 문서 에는 다음과 같이 명시되어 있습니다.
4.3. OpenID 제공자 구성 검증
이 사양에 정의된 검증 절차 중 하나가 실패하면, 올바르게 검증되지 않은 정보가 필요한 모든 작업은 중단되어야 하며, 검증에 실패한 정보는 사용해서는 안 됩니다.
반환된 issuer 값은 구성 정보를 가져오기 위해 직접 사용된 발급자 URL과 동일해야 합니다. 또한 이 값은 해당 발급자가 발급한 ID 토큰의 iss 클레임 값과도 동일해야 합니다.
마지막 문장의 두 가지 요구사항은 충족되지 않았습니다. iss 클레임 값은 구성 정보를 가져오기 위해 사용된 발급자 URL과 동일하지만, 둘 다 반환된 issuer 값과는 동일하지 않습니다.
따라서 제 생각에는 상대방이 틀렸고, 여러분이 맞습니다. 하지만 안타깝게도 그것이 여러분에게 도움이 되지는 않습니다.
Alexander
(Alexander Barrios)
6월 27, 2022, 10:34오후
3
Richard - Communiteq:
흥미로운 사실입니다. 저는 이 사실을 몰랐습니다
이 문제를 보고하고 답변을 링크했습니다. 이제 ID Uruguay 지원팀의 답변을 기다리겠습니다 .
현재는 정확한 issuer를 가진 pastebin(임의로 테스트용으로 사용했습니다)을 사용 중이며, 모든 것이 정상적으로 작동하는 것 같습니다. ID Uruguay를 프로덕션 모드로 신청하기 전에 지원팀이 이 세부 사항을 해결해 주기를 바랍니다.
RGJ
(Richard - Communiteq)
6월 28, 2022, 6:16오전
4
사양(spec)에 따르면
라고 명시되어 있는데, 실제로는 동작 한다니 놀랍습니다
Alexander
(Alexander Barrios)
6월 28, 2022, 2:49오후
5
음, 답변을 받았는데, "우리 쪽에는 문제가 없으며 널리 사용되고 있다"는 이유로 수정을 거부하더군요
JWT를 확인하는 방법에 대해 문서에서 아무것도 찾을 수 없으니, 아마도 그것이 “그냥 작동하는” 이유인 것 같습니다
문서 (Google 번역):
https://centroderecursos-agesic-gub-uy.translate.goog/web/seguridad/wiki/-/wiki/Main/ID+Uruguay+-+Integración+con+OpenID+Connect?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp
반환되는 issuer를 수정하는 discovery document용 "프록시 "를 만들어 보았는데, 이것도 "그냥 작동"하더군요. 이 문제를 보고했더니 수용해 주었습니다
향후에는 사양을 따르지 않기 때문에 실패할 것 같지만, 지금은 문제없습니다.
도움을 주신 시간을 내어 주신 Richard님께 감사합니다!