I'm drilling down into IAKERB right now and I had a thought ...
Unlike regular Kerberos where the initiator has a ticket from the ccache already acquired in a separate authentication step, IAKERB needs "starter" credentials like a principal name and plaintext password.
So how does an IAKERB initiator get the client principal name and password?
Rather than a callback I'd prefer to have a new major status code that indicates that the application must call a function to extract the
prompts / supply answers, and this would use the partial security
context handle to sequence things.
Yeah, when trying to do iakerb_gss_init_sec_context and there's no TGT (or Ticket), then just returning an error is reasonable.
Applications would have to add new code to set a callback or catch an error so neither way is going to be transparent.
But of course applications are not going to use the gss_acquire_cred_* functions (and they probably should not).
When the user gets an error, they will have to use some utility that knows
to use gss_acquire_cred_with_password with IAKERB to some IAKERB-aware service.
Then, with a TGT in their ccache, the application should now init IAKERB successfully.
Correct?
From an enterprise perspective the RDP case is very useful because youget to allow analog-only holes for exfiltration, and you greatly reduce
But that utility might as well be any app that knows it's likely to beI like to think about what is ideal, and then I do what I can.
used in an IAKERB-requiring context _and_ interaction is possible.
E.g., RDP, SSHv2 w/ GSS KEYS/userauth, any remote access system like
that.
Filesystem protocols are harder to do initial credential acquisition in because ...
Ideally there should be some unix socket service that just processes gss tokens.
Being a separate process it can do crypto without exposing base keys and
even store the plaintext password (encrypted of course) used to login to
the device and achieve true SSO.
It would provide persistence so that transient processes can get creds without prompting.
It would normalize the prompting.
Presumably no such service exists so what can I do?
You seem to be suggesting that each of potentially multiple applications should be able to trap on an error, prompt for initial credentials (in whatever way) and then do an a-typical gss_acquire_cred_with_password with just the IAKERB mech.
Another method would be to modify kinit to optionally authenticate with an IAKERB-aware service and cache the resulting TGT in the usual way.
More specifically, add an option to krb5.conf like:
[libdefaults]
iakerb_idp = https://idp1.mega.corp/do/iakerb
On 4/26/25 10:39, Michael B Allen wrote:
Another method would be to modify kinit to optionally authenticate withan
IAKERB-aware service and cache the resulting TGT in the usual way.
More specifically, add an option to krb5.conf like:
[libdefaults]
iakerb_idp = https://idp1.mega.corp/do/iakerb
If the goal is simply to tunnel an AS/TGS exchange over https using a
web server set up for that purpose, I think MS-KKDCP is a more natural
fit than IAKERB. See:
https://web.mit.edu/kerberos/krb5-latest/doc/admin/https.html
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-kkdcp/
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 64 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 492944:07:58 |
| Calls: | 842 |
| Files: | 1,304 |
| D/L today: |
8 files (19,649K bytes) |
| Messages: | 261,765 |