communes http client - Kerberos jeton lors de la négociation a \ r \ n (retour chariot saut de ligne) caractères

StackOverflow https://stackoverflow.com/questions/3018148

Question

Je suis en train d'utiliser commons http jakarta client. Faire l'authentification pour communiquer kerberos avec un serveur. L'authentification échoue toujours. En creusant plus profond j'ai découvert que l'en-tête jeton kerberos a des caractères chariot d'alimentation de la ligne de retour dans ce qui est la cause fondamentale de la question. Pourquoi at-il \ r \ n caractères et pourquoi est-ce un problème?

Était-ce utile?

La solution

\ r \ n caractères dans les kerberos jeton est un problème parce que \ r est un des caractères de contrôle HTTP. Cela signifie essentiellement que le serveur ne voit que la première ligne du jeton et ne tient pas du repos où l'authentification défaillante. Pour empirer les choses, les prochains goûts du jeton sont considérés comme nouveaux en-têtes et ne seront pas bien formatés. Alors http serveur paniquer.

La raison pour cela est parce que la spécification RFC 1521 indique que la longueur de la ligne de codage base64 est limité à 76 caractères. Par conséquent \ r \ n caractères. Et cela ne fonctionne pas bien avec le protocole HTTP. Ce surfaces uniquement si vous utilisez des jetons Kerberos qui sont base64.

Alors solution à cela est de dépouiller \ r \ n caractères de Kerberos base64 codé en-tête de jeton. En outre, les anciennes versions de codec communes apache ne base64 limite encodant à 76 lignes et donc pas un problème. Donc, si vous avez crochet dans le codage, la bande les caractères problématiques. Si vous ne vous utilisez ensuite ancienne version de apache code commun avec commons-httpclient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top