jwt에서 'aud'와 'iss'의 차이점


13

더 강력한 인증 서비스를 구현하고 싶은데 내가하고 싶은 일 jwt의 큰 부분이며 코드 작성 방법을 이해하고 있지만 예약 issaud청구 의 차이점을 이해하는 데 약간의 어려움이 있습니다. 나는 토큰을 발행하는 서버를 정의하고 사용하려는 응용 프로그램을 참조한다는 것을 이해합니다. 그러나 내가 이해하는 방식은 내 청중과 발행자가 동일한 것이므로 myserver.com토큰을 발행하여 오는 사람들 myserver.com이 승인되고 인증 될 수 있다는 것입니다. 나는 두 주장 사이에 차이점이 보이지 않지만 나는 하나의 주장이 있다는 것을 알고 있습니다.
있었다 좋은 기사 에 서면msdn 예약 된 모든 주장에 대해 발행자와 청중이 완전히 다르기 때문에 가장 혼란 스러웠습니다.


당신은에 관심이있을 것이다 JWT RFC-7519
Laiv

답변:


10

이는 의도 한 수신자 인 응용 프로그램과 동일하지 않은 토큰 발급 기관이있는 시나리오를위한 것입니다.

응용 프로그램과 다를 수 있습니다.

그러나 대규모 응용 프로그램을 고려하십시오. 인증서를 발행하는 OAuth 또는 SSO 서버가있을 수 있으며 SSO 서버를 표시하는 토큰을 원하는 애플리케이션이 사용자의 신임을 확인하고 사용자가 애플리케이션을 사용하도록 승인했습니다. 이 경우 "aud": "aud.example.com"and 로 토큰을 가질 수 있습니다 "iss": "sso.example.com".


아 알 겠어요 내가 두 가지를 생각했기 때문에 그것은 내 오해였습니다. 1. 당신은 주장의 일부로 "iss"와 "aud"를 가져야했습니다. 2. 그들은 서로 유일해야했다. 이것은 분명히 진실이 아닙니다. 당신이 나의 것과 같은 응용 프로그램을 가지고 있다면, 당신은 당신의 두 주장을 포함 jwt하거나 동일 할 수 있기 때문에 그것을 떠나시겠습니까?
Adam McGurk

당신이 그것을 사용할 이유가있을 때 확실히 그것들을 남겨두고 나중에 추가 할 수 있습니다
Paul

것이 aud때로는 제 3 자이거나하지?
Andy

또한 사용자가 주어진 응용 프로그램에 대해 승인되었음을 나타내는 데 범위가 사용되지 않는 이유가 혼란 스럽다고 생각합니다.
앤디

예, aud단일 값 또는 배열 일 수 있습니다. 의도 한 각 수신자 또는 프로세서와 일치해야합니다. api.example.com을 호출하여 쿼리를 실행하려는 사용자 (또는 응용 프로그램)라고 가정하겠습니다. api.example.com이 인증을 처리하기 위해 일부 타사 인증 서비스 (예 : Auth0)를 신뢰하는 경우 해당 인증 서비스는 aud'api.example.com'으로 채워지고 'api.example.com'의 앱은 케이스. 범위는 대상보다 세분화되며 페이로드에도 포함될 수 있습니다.
Paul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.