I've got working code for FORWARDABLE AND PROXIABLE ... I've been looking at 
the changes needed for RENEWABLE_OK (and maybe other flags).

Right now the code feels a bit strange.  I set a flag in KrbOptions and I'm 
converting the appropriate flags to KdcOptions, then generating the bitmap.  
Should this really be happening just by matching the enum name() from KrbOption 
to KdcOption?  DIRKRB-449 (https://issues.apache.org/jira/browse/DIRKRB-449) is 
resolved as of commit 9e504bd785d894491bd8f4fbe2359f346d951299 
(https://github.com/apache/directory-kerby/commit/c3c778f3af0fe2a187c10447682bf12b9bed7c6d),
 so the flags in the AsRequest are set properly.

Here's the snippet of code I created to copy the KrbOptions to KdcOptions ... I 
think this was the designed intention:

        KdcOptions kdcOptions = new KdcOptions();
        for (KOption koption: requestOptions.getOptions()) {
            try {
              KdcOption kdcOption = KdcOption.valueOf(koption.getOptionName());
              kdcOptions.setFlag(kdcOption, 
requestOptions.getBooleanOption(koption, false));
            } catch (IllegalArgumentException | NullPointerException e) {
              // It's completely acceptable that a request option is NOT a 
KdcOption
              // but PMD doesn't like empty finally or catch blocks - here's a 
message
              // just for you!
              e.getMessage();
            }
        }
        
        asRequest.setKdcOptions(kdcOptions);

DIRKRB-450 (https://issues.apache.org/jira/browse/DIRKRB-450) was assigned to 
me and I'll try to get a pull request for this code issued today.  As noted 
below, DIRKRB-452 (https://issues.apache.org/jira/browse/DIRKRB-452) is also 
required for those using the KinitTool (at the moment, I'm requesting TGTs 
programmatically).

Kai and Jia:

Is a pull request on GitHub the easiest way to send you code changes or would 
you prefer patches attached to the issues in Jira?

Steve

--

“The mark of the immature man is that he wants to die nobly for a cause, while 
the mark of the mature man is that he wants to live humbly for one.” - Wilhelm 
Stekel

----- Original Message -----
From: "Zheng, Kai" <[email protected]>
To: [email protected]
Sent: Tuesday, November 17, 2015 10:18:09 PM
Subject: RE: How to request a forwardable ticket?

Looks like we're hitting this issue, which isn't resolved yet. I got some 
mistaken. 
https://issues.apache.org/jira/browse/DIRKRB-452


-----Original Message-----
From: Zheng, Kai [mailto:[email protected]] 
Sent: Wednesday, November 18, 2015 11:10 AM
To: [email protected]
Subject: RE: How to request a forwardable ticket?

Ok, see. Looks like KrbOption.FORWARDABLE in request options isn't passed down 
to KdcOptions for the final AsReq. 
Will take a look and possible fix it soon.

-----Original Message-----
From: Marc Boorshtein [mailto:[email protected]]
Sent: Wednesday, November 18, 2015 10:43 AM
To: [email protected]
Subject: Re: How to request a forwardable ticket?

Thanks Kai, I'm having the same issue with the latest code.  Here's the pull 
log:

emote: Counting objects: 467, done.
remote: Compressing objects: 100% (70/70), done.
remote: Total 143 (delta 47), reused 0 (delta 0) Receiving objects: 100% 
(143/143), 12.23 KiB | 0 bytes/s, done.
Resolving deltas: 100% (47/47), completed with 35 local objects.
>From https://git1-us-west.apache.org/repos/asf/directory-kerby
   955a845..d18ad29  master     -> origin/master
Updating 955a845..d18ad29
Fast-forward
 
.../zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
|   8 +--
 kerby-config/src/main/java/org/apache/kerby/config/Conf.java
                                     |  48 +++++++++---------  
kerby-config/src/main/java/org/apache/kerby/config/Config.java
                                     |  35 +++++++------  
kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java
                                     |  71 +++++++++++++++-----------  
kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java
                                     |  11 ++--  
kerby-dist/kdc-dist/assembly.xml
                                     |   2 +
 kerby-dist/tool-dist/assembly.xml
                                      |   2 +
 
kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
                      |  43 ++++++++++------  
kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
                   |   2 +-
 
kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
 |   8 +++
 
kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java
              |  10 ++--
 
.../kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoadWithDefaultRealm.java
     |  45 +++++++++++++++++
 kerby-kerb/kerb-client/src/test/resources/krb5-kdcrealm.conf
                                     |  19 +++++++  
kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java
                  |  17 ++++---
 
kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java
               |   3 +-
 
kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java
              |   5 +-
 
kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbFlags.java
                      |  28 ++++++-----
 
kerby-kerb/kerb-core/src/test/java/org/apache/kerby/kerberos/kerb/spec/base/KrbFlagsTest.java
                  | 155
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
                      |  44 +++++++++-------  
kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java
                        |   2 +-
 20 files changed, 420 insertions(+), 138 deletions(-)  create mode 100644 
kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoadWithDefaultRealm.java
 create mode 100644
kerby-kerb/kerb-client/src/test/resources/krb5-kdcrealm.conf
 create mode 100644
kerby-kerb/kerb-core/src/test/java/org/apache/kerby/kerberos/kerb/spec/base/KrbFlagsTest.java


On Tue, Nov 17, 2015 at 9:32 PM, Zheng, Kai <[email protected]> wrote:

> Hi Marc,
>
> There're recent contribution fixes related to this from Steve. Would 
> you checkout and update to the latest codes?
>
> commit c3c778f3af0fe2a187c10447682bf12b9bed7c6d
> Author: plusplusjiajia <[email protected]>
> Date:   Tue Nov 17 15:08:59 2015 +0800
>
>     DIRKRB-449 Fix the bit manipulation functions in KrbFlags. 
> Contributed by Steve.
>
> Regards,
> Kai
>
> -----Original Message-----
> From: Marc Boorshtein [mailto:[email protected]]
> Sent: Wednesday, November 18, 2015 10:27 AM
> To: [email protected]
> Subject: How to request a forwardable ticket?
>
> I can't seem to workout how to specify any options for a ticket.  For 
> s4u the TGT and SGTs need to be forwardable.  Here's my code so far:
>
> KOptions requestOptions = new KOptions();
>
>         requestOptions.add(KrbOption.CLIENT_PRINCIPAL,
> "HTTP/[email protected]");
>
>         requestOptions.add(KrbOption.USE_KEYTAB, true);
>
>         requestOptions.add(KrbOption.KEYTAB_FILE, new File( 
> "/Users/mlb/Documents/localdev.keytab"));
>
>         requestOptions.add(KrbOption.FORWARDABLE,true);
>
> TgtTicket tgt = kerb.requestTgtWithOptions(requestOptions);
>
> Looking at the code it doesn't look like the options are ever picked up.
> Any thoughts on how to set the forwardable flag?
>
> Thanks
>
> Marc
>

Reply via email to