2

Thinktecture.IdentityServer는 JWT 토큰을 암호화하여 지원합니까? 예를 들어 토큰이 응답 공격에서 사용되지 않도록 보호 할 수 있습니까?Thinktecture Identity Server에서 JWT 토큰을 어떻게 암호화합니까?

그렇다면 클라이언트가 암호화 된 토큰을 어떻게 해독 할 수 있습니까?

IdentityServer 일반 구성에서 "토큰 암호화 필요"를 설정하려고 시도했지만 로그인을 시도한 후에 아이디 서버 웹 페이지에서 "암호화 키를 사용할 수 없음"메시지가 표시됩니다.

문제가 있습니까? 아니면 필수 설정이 누락 되었습니까?

답변

4

암호화는 기밀성을위한 것이며 재생 공격을 막기위한 것이 아닙니다.

Microsoft jwt 라이브러리는 암호화를 지원하지 않습니다. 그리고 우리는 그 도서관에 의존합니다.

+0

다른 질문이 있는데 https://abc.def.com/issue/oauth2/authorize를 사용하고 자바 스크립트를 사용하여 ID 서버에 매개 변수를 전달한 다음 액세스 토큰을 얻을 수 있습니다. Base64Url을 사용하여이 액세스 토큰을 디코딩하면됩니다. 사용자 나 해커가 쉽게 해독 할 수있게하고 싶지 않습니다. 이 보안 문제를 개선 할 수 있습니까? 다시 한 번 감사드립니다. –

+1

이것은 보안상의 문제는 아닙니다. 토큰은 서명되어 발행 된 후에는 변경할 수 없습니다. Microsoft 라이브러리는 암호화를 지원하지 않으므로 기밀성이 문제인 경우 현재 JWT 구현을 사용할 수 없습니다. – leastprivilege

+0

아무도 토큰을 바꿀 수 없다는 것을 의미합니까? [Google JWT 디코더] (https://developers.google.com/wallet/digital/docs/jwtdecoder)에 액세스 토큰을 넣으려고하면 헤더, 클레임, 서명이라는 세 가지 패턴이 나타납니다. 누군가가 클레임을 변경하려고 시도하면 해당 정보를 새 액세스 토큰으로 다시 랩합니다. 이 새로운 토큰을 RP 클라이언트에 전달하는 것은 불가능하거나 불가능합니까? 그렇지 않으면 헤더 (x5t) 문자열과 서명 문자열을 사용하여 내 RP 클라이언트에서 새 토큰의 유효성을 검사 할 수 있습니까? –