Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow the KDB to see and modify auth indicators #965

Merged
merged 1 commit into from Aug 27, 2019

Conversation

greghudson
Copy link
Member

Amend the sign_authdata method signature to include a modifiable
auth_indicators array. Bump the DAL major version and the libkdb5
soname.

[This overlaps with PR #912 which also adds a parameter to sign_authdata, but the merge should be straightforward. I will likely want to add a test case by having the test KDB module do something to the auth indicators in its sign_authdata method before merging, but this should be enough to get feedback from Samba developers.]

@iboukris
Copy link
Contributor

iboukris commented Aug 8, 2019

I guess kdb_test plugin minor version should be set to 0.

Copy link
Contributor

@simo5 simo5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@greghudson
Copy link
Member Author

I added a test case and corrected the test KDB module's minor version.

Alexander said he would attempt an experiment using FreeIPA and Samba, so I will likely wait for that before merging.

src/kdc/kdc_authdata.c Outdated Show resolved Hide resolved
greghudson pushed a commit to iboukris/krb5 that referenced this pull request Aug 14, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 15, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 15, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 15, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 15, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 18, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 18, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 20, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 22, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 24, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
Amend the sign_authdata method signature to include a modifiable
auth_indicators array.  Bump the DAL major version and the libkdb5
soname.  Add a test case using the test KDB module.

ticket: 8823 (new)
@greghudson greghudson merged commit 7196c03 into krb5:master Aug 27, 2019
@greghudson greghudson deleted the kdb-authind branch August 27, 2019 05:25
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 27, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 27, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 27, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
iboukris added a commit to iboukris/krb5 that referenced this pull request Aug 27, 2019
Add two new KDB methods to support resource-based constrained
delegation.  The get_authdata_info method extracts the client
principal for the authdata (necessary for cross-realm RBCD requests as
the evidence ticket is a cross-realm TGT with the client's authdata),
and also returns an opaque pointer for consumption by other KDB
methods.  The allowed_to_delegate_from method performs a constrained
delegation policy check on the principal entry of the target
principal.

Add the server principal and abstract authdata representation to the
sign_authdata method.  (XXX the DAL major version and KDB API version
need to be bumped; this will be handled in the merge with PR krb5#965.)

Add core KDC code for RBCD requests.  For local RBCD requests
(impersonator and target in the same realm), KDC handling is similar
to existing constrained delegation support.  The evidence ticket is
not required to be forwardable, and allowed_to_delegate_from is used
in preference to check_allowed_to_delegate.

For cross-realm RBCD requests, the KDC could be in the impersonator
realm, the target realm, or in a transit realm between the two.  In
the transit realm case, the request looks like a regular cross-realm
request for a krbtgt service except for the information in the PAC, so
this case is handled by the KDB module sign_authdata() method.

[ghudson@mit.edu: made style and documentation edits, and edited
commit message]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants