Learn-json-web-tokens: рдХреНрдпреЛрдВ "рдПрдХрд▓ рдЙрдкрдпреЛрдЧ" MITM рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдорд╛рд░реНрдЪ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dwyl/learn-json-web-tokens

MITM (рдореИрди-рдЗрди-рдж-рдорд┐рдбрд▓рдЕрдЯреИрдХ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ (рдПрдХрд▓ рдЙрдкрдпреЛрдЧ) рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреЛ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ)" MITM рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЯреЛрдХрди рд╕рд┐рд░реНрдл рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рд░ рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЯреЛрдХрди рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдирдпрд╛ рдЯреЛрдХрди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдирдпрд╛ рдЯреЛрдХрди рдЕрднреА рднреА рдмрд┐рдЪреМрд▓рд┐рдП рджреНрд╡рд╛рд░рд╛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@NE-SmallTown рддреБрд░рдВрдд рдЬрд╡рд╛рдм рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
JWT рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдПрдХрд▓-рдЙрдкрдпреЛрдЧ рдЕрдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╛рд╡рд╛/рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ
рджреЗрдЦреЗрдВ: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#RegisteredClaimName

@jbspeakr рдореЗрдВ
рджреЗрдЦреЗрдВ: https://www.jbspeakr.cc/howto-single-use-jwt/

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ рдПрдирдИ-рд╕реНрдореЙрд▓рдЯрд╛рдЙрди рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХрд▓-рдЙрдкрдпреЛрдЧ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ onPreResponse рд╣реБрдХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ JWT рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЬрд┐рд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ: рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЯреЛрдХрди _not_ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдЖрдкрдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (_рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рд╣рдорд╛рд░реЗ рдРрдкреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП redis рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЯреЛрдХрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

@nelsonic рдЖрдкрдХреЗ

рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ:

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдо рдкреЗрдЬ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣реЗрдбрд░ рдореЗрдВ рдЯреЛрдХрди рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓реЙрдЧрд┐рди рдХрд┐рдпрд╛ рд╣реИ)

                                       |
                                       |
                                       тЖУ

рд╕рд░реНрд╡рд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдФрд░ рдлрд┐рд░ рдорд┐рд▓ userId рдЯреЛрдХрди рдбрд┐рдХреЛрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдореИрдВ рдмрдЬрд╛рдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ redis рдХреЗ рдЯреЛрдХрди рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдмрдВрдзрд┐рдд) userId , рдФрд░ рдлрд┐рд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ == рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЯреЛрдХрди рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрдмрд╛рдПрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ, рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл == рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЯреЛрдХрди рдореЗрдВ рд╣реА рд╕рддреНрдпрд╛рдкрди рддрдВрддреНрд░ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ? рдЬреИрд╕реЗ:

JWT.require(Algorithm.RSA256((RSAKey) publicKey))
                .withIssuer("auth")
                .withSubject("ne-smalltown")
                .withAudience(userId)
                .withArrayClaim("jwt-role", userRole)
                .build()

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рдКрдкрд░ рдХреА рддрд░рд╣ рддрдВрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ?

рдЖрдИрдПрдордУ, рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдореИрдВ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддрдВрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрди рдХрд╛ expрдХреНрд╕реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирдП рдЯреЛрдХрди рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреВрдВ рдХрд┐ рдЯреЛрдХрди рдкреБрд░рд╛рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрдирдГ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

                                        |
                                        |
                                        тЖУ

рдХреНрд▓рд╛рдЗрдВрдЯ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ localstorage рдкрд░ рдзрдХреЗрд▓рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ, рдпрд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

@nelsonic рд╣реИрд▓реЛ?

@NE-SmallTown рддреБрд░рдВрдд рдЬрд╡рд╛рдм рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
JWT рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдПрдХрд▓-рдЙрдкрдпреЛрдЧ рдЕрдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╛рд╡рд╛/рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ
рджреЗрдЦреЗрдВ: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#RegisteredClaimName

@jbspeakr рдореЗрдВ
рджреЗрдЦреЗрдВ: https://www.jbspeakr.cc/howto-single-use-jwt/

@nelsonic рдкреЛрд╕реНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреЛрд╕реНрдЯ рдХрд╣рддреА рд╣реИ:

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрд╛рд╕рд╡рд░реНрдб-рд░реАрд╕реЗрдЯ рдЯреЛрдХрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдИрдореЗрд▓ рд╕рдХреНрд░рд┐рдпрдг, рдЦрд╛рддрд╛ рдкреБрд╖реНрдЯрд┐

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпреЗ рдорд╛рдорд▓реЗ рд╕рд┐рдВрдЧрд▓-рдпреВрдЬ-рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рднреВрдорд┐рдХрд╛ рд╕реНрдерд┐рд░ рд╣реИ , рдЗрд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб-рд░реАрд╕реЗрдЯ, рдИрдореЗрд▓ рд╕рдХреНрд░рд┐рдпрдг, рдЦрд╛рддрд╛ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдЖрджрд┐ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

рддреЛ, рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдмрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде == рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

nelsonic picture nelsonic  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rjmk picture rjmk  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

joepie91 picture joepie91  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sarneeh picture sarneeh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

KumarS-Naveen picture KumarS-Naveen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ