Déchiffrer un ticket kerberos en utilisant Spnego
Je suis en utilisant spnego ( http://spnego.sourceforge.net ) pour l'authentification kerberos dans JBoss.
J'ai besoin de déchiffrer ticket kerberos pour l'accès a l'autorisation de données qui permettra d'information PAC de données. La PAC de données est nécessaire pour décider quels rôles doivent être accordées à l'utilisateur.
Comment accéder et de décrypter le ticket kerberos? J'ai cherché sur net pour des exemples, mais sans effort.
source d'informationauteur Danubian Sailor
Vous devez vous connecter pour publier un commentaire.
Ces gars-là ont toute une PAC décodage de mise en œuvre:
http://jaaslounge.sourceforge.net/
Vous pouvez utiliser le jeton de l'analyseur comme ceci:
Vous allez avoir besoin de sauter bien des cerceaux si vous souhaitez décrypter le sous-jacent ticket Kerberos. Vous ne savez pas si vous avez besoin que.
Subvention
J'ai utilisé avec succès le filtre de servlet de http://spnego.sourceforge.net en combinaison avec la PAC analyseur de http://jaaslounge.sourceforge.net/ sans la nécessité de faire quelque chose explicitement avec DER/ASN.1 analyseurs :
J'ai aussi écrit un nouveau HttpFilter (forké spnego.sf.net): spnego-pac, qui divulgue l'LogonInfo par le biais de la getUserPrincipal().
Un exemple de projet démontrant le code ci-dessus dans leur intégralité peuvent être trouvés ici:
https://github.com/EleotleCram/jetty-spnego-demo
Spnego-pac filtre (utilisé dans l'exemple ci-dessus) peut être trouvé ici:
https://github.com/EleotleCram/spnego.sf.net-fork
Espère que cela est utile à tout le monde.
__
Marcel
Si vous obtenez le mécanisme de jeton de la
spnegoToken
comme ceci:Le mécanisme jeton est généralement un
KerberosApRequest
. Il y a unKerberosToken
constructeur qui prend unKerberosApRequest
. Il suffit de passer lesmechanismToken
tableau d'octets avec la clé pour déchiffrer le contenu.- Je fournir à mon propre solution au problème:
Je l'ai basé ma solution sur BouncyCastle bibliothèque (pour l'analyse des pièces de jeton) et JaasLounge (pour le décryptage chiffré partie de jeton). Malheureusement, le code de décodage de l'ensemble spnego jeton de JaasLounge a échoué pour mes besoins. J'ai eu à l'écrire moi-même.
J'ai décodé billet, partie par partie, tout d'abord la construction de DERObjects de byte[] tableau:
Le ganupt() est ma fonction d'assistance, de supprimer DERTaggedObject emballage
Pour l'extraction de la séquence de DERObject à partir de DERObject j'ai écrit une autre fonction d'assistance:
À la fin, quand j'ai DEROctetStream, que les contenus cryptés la partie, j'ai simplement utilisé KerberosEncData:
La séquence d'octets que nous recevons de navigateur client sera analysée en un seul DERApplicationSpecific
qui est le billet à la racine de niveau 0.
La racine contient:
Niveau 1 contient:
Niveau 2 contient:
0x01 0x00
analysée comme boolean (false)Niveau 3 contient:
Billet de la partie 4 contient:
nom du serveur et le nom de l'instance
Chiffré partie de la séquence (niveau 5) contient:
Le problème était avec DERBoolean constructeur, qui jettent ArrayIndexOutOfBoundException, lorsque la séquence 0x01 0x00 a été trouvé. J'ai dû changer de constructeur:
Wow été un moment depuis que j'ai utilisé spnego (presque un an) ... Vous demandez à une très cool question.
J'ai fait creuser un peu et vais essayer et d'exécuter du code que j'avais depuis un temps, c'était de travailler avec MS-AD mais pas d'humeur aujourd'hui :-/
De toute façon, j'ai trouvé ce lien par le biais de google:
http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBMQFjAA&url=http%3A%2F%2Fbofriis.dk%2Ffiles%2Fms_kerberos_pac.pdf&rct=j&q=java%20kerberos%20privilege%20attribute%20certificate&ei=2FASTbaLGcP38Abk07iQDg&usg=AFQjCNHcIfQRUTxkQUvLRcgOaQksCALTha&sig2=g8yn7ie1PbzSkE2Mfv41Bw&cad=rja
J'espère que ça peut vous donner une idée.