>The question I have here is that the KrbToken needs to call the following code >internally somehow:
>this.innerToken = getTokenDecoder().decodeFromBytes(getTokenValue()); >setTokenType(); >There is a commented out "decode(ByteBuffer)" method that contains code that >does this for a supplied ByteBuffer value. Should this method be called >implicitly by >the AdToken code somehow? Or is it up to the client code to call decode on >KrbToken? I'm not very sure, I think it's up to the client code to call to decode the KrbToken. Thanks Jiajia -----Original Message----- From: Colm O hEigeartaigh [mailto:[email protected]] Sent: Friday, June 30, 2017 5:46 PM To: [email protected] Subject: Re: Kerby JWT support On Fri, Jun 30, 2017 at 4:16 AM, Li, Jiajia <[email protected]> wrote: > > Yes, agree with you, credential cache it not really needed. > > OK I have committed this fix. > The EncTicketPart should be unseal, I think the following code could > help you. > > Ticket ticket = apReq.getTicket(); > EncTicketPart encPart = EncryptionUtil.unseal(ticket.g > etEncryptedEncPart(), > encKey, KeyUsage.KDC_REP_TICKET, EncTicketPart.class); > ticket.setEncPart(encPart); > It does, thanks! I have it kind of working now with a few hacks. I can get the KrbToken from the AuthorizationData now as follows: AuthorizationData authzData = encPart.getAuthorizationData(); AuthorizationDataEntry dataEntry = authzData.getElements().iterator().next(); AdToken token = dataEntry.getAuthzDataAs(AdToken.class); KrbToken decodedKrbToken = token.getToken(); The question I have here is that the KrbToken needs to call the following code internally somehow: this.innerToken = getTokenDecoder().decodeFromBytes(getTokenValue()); setTokenType(); There is a commented out "decode(ByteBuffer)" method that contains code that does this for a supplied ByteBuffer value. Should this method be called implicitly by the AdToken code somehow? Or is it up to the client code to call decode on KrbToken? Colm. > > Thanks > Jiajia > > -----Original Message----- > From: Colm O hEigeartaigh [mailto:[email protected]] > Sent: Wednesday, June 28, 2017 5:41 PM > To: Li, Jiajia <[email protected]> > Cc: [email protected] > Subject: Re: Kerby JWT support > > Hi Jiajia, > > On Tue, Jun 27, 2017 at 9:37 AM, Li, Jiajia <[email protected]> wrote: > > > > > 2) Do you mean if the credential cache is null or not set, we can > > skip the step to store the TGT ticket to credential cache? > > > > Yes exactly. "tgtTicket" is stored as a variable in the > TokenAuthLoginModule so we may not need the credential cache at all. > If you agree I will fix this. > > > > 3) We get the armor key from armor cache, do you mean to set the > > armor key in client and KDC to replace the armor cache? > > > > No, I want to find a way to avoid having an armor key at all. If the > purpose of the armor key is to encrypt the communication with the KDC, > then if the JWT token is encrypted this requirement is not necessary. > But perhaps it's not possible to skip this step? > > > > > > 4) I thinks it's great to put claims from the JWT token into the > > authorization data of the ticket, that will be an important feature. > > > > OK I have created a JIRA for this. > > > > > > 5) Actually, AuthorizationData is not really set in the > > EncTicketPart, in AbstractIdentityBackend with the following > implementation: > > protected AuthorizationData doGetIdentityAuthorizationData( > > Object kdcRequest, EncTicketPart encTicketPart) > > throws KrbException { > > return null; > > } > > > > Right, but I am doing this locally. The problem is on the client side > that "tkt.getTicket().getEncPart()" is null. How can I see what the > authorization data of the ticket is on the client side, so that I can > test that it was inserted correctly? > > Colm. > > > > > > Thanks > > Jiajia > > > > -----Original Message----- > > From: Colm O hEigeartaigh [mailto:[email protected]] > > Sent: Monday, June 19, 2017 8:24 PM > > To: [email protected] > > Subject: Kerby JWT support > > > > Hi all, > > > > I'd like to resurrect some of the issues surrounding the JWT support > > in Kerby. If nothing else we can hopefully agree on what the > > outstanding issues are and then put them into JIRA so that we have a > > record of what needs to be done. Some of the tasks are fairly > > trivial and could be addressed for the next release. > > > > 1) There was a proposal last year to move the TokenAuthLoginModule > > from the "integration-test" module into the "kerb-client" module in > > a separate package like 'jaas'. > > > > 2) I'd like to make the credential cache configuration item in the > > TokenAuthLoginModule optional to simplify the configuration. It's > > not actually needed as we just keep the TgtTicket internally in the > > LoginModule anyway. > > > > 3) Right now, we need an armor cache to then get a TGT using a JWT. > > However, I think we should also support configuring the KDC with a > > private decryption key. If the incoming JWT token is encrypted to > > the KDC then we should be able to skip the armor cache step. > > > > 4) For the access token case, make it possible to put claims from > > the JWT token into the authorization data of the ticket. I've done > > some work on this last year that could be re-used. > > > > 5) To test (4), I'd like to be able to query the authorization data > > of the issued service ticket. However, using the Kerby API, the > > following returns null? > > > > tkt.getTicket().getEncPart() (.getAuthorizationData()) > > > > Is there a way for me to access the authorization data of the ticket > > using the Kerby API in some way to check that it's actually getting > > inserted properly? > > > > Thoughts? Am I missing anything else? > > > > Colm. > > > > > > -- > > Colm O hEigeartaigh > > > > Talend Community Coder > > http://coders.talend.com > > > > > > -- > Colm O hEigeartaigh > > Talend Community Coder > http://coders.talend.com > -- Colm O hEigeartaigh Talend Community Coder http://coders.talend.com
