DATA_BLOB **_upn_info_blob,
DATA_BLOB **_pac_attrs_blob,
uint64_t pac_attributes,
- DATA_BLOB **_requester_sid_blob)
+ DATA_BLOB **_requester_sid_blob,
+ DATA_BLOB **_client_claims_blob)
{
struct auth_user_info_dc *user_info_dc = NULL;
DATA_BLOB *logon_blob = NULL;
DATA_BLOB *upn_blob = NULL;
DATA_BLOB *pac_attrs_blob = NULL;
DATA_BLOB *requester_sid_blob = NULL;
+ DATA_BLOB *client_claims_blob = NULL;
NTSTATUS nt_status;
*_logon_info_blob = NULL;
if (_requester_sid_blob != NULL) {
*_requester_sid_blob = NULL;
}
+ if (_client_claims_blob != NULL) {
+ *_client_claims_blob = NULL;
+ }
logon_blob = talloc_zero(mem_ctx, DATA_BLOB);
if (logon_blob == NULL) {
}
}
+ if (_client_claims_blob != NULL) {
+ /*
+ * Until we support claims we just
+ * return an empty blob,
+ * that matches what Windows is doing
+ * without defined claims
+ */
+ client_claims_blob = talloc_zero(mem_ctx, DATA_BLOB);
+ if (client_claims_blob == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ }
+
nt_status = samba_kdc_get_user_info_from_db(p,
p->msg,
&user_info_dc);
if (_requester_sid_blob != NULL) {
*_requester_sid_blob = requester_sid_blob;
}
+ if (_client_claims_blob != NULL) {
+ *_client_claims_blob = client_claims_blob;
+ }
return NT_STATUS_OK;
}
}
static krb5_error_code samba_get_requester_sid(TALLOC_CTX *mem_ctx,
- krb5_pac pac,
+ krb5_const_pac pac,
krb5_context context,
struct dom_sid *sid)
{
/* Does a parse and SID check, but no crypto. */
krb5_error_code samba_kdc_validate_pac_blob(
krb5_context context,
- struct samba_kdc_entry *client_skdc_entry,
- const krb5_pac pac)
+ const struct samba_kdc_entry *client_skdc_entry,
+ const krb5_const_pac pac)
{
TALLOC_CTX *frame = talloc_stackframe();
struct auth_user_info_dc *pac_user_info = NULL;
DATA_BLOB *upn_blob = NULL;
DATA_BLOB *deleg_blob = NULL;
DATA_BLOB *requester_sid_blob = NULL;
+ DATA_BLOB *client_claims_blob = NULL;
bool is_untrusted = flags & SAMBA_KDC_FLAG_KRBTGT_IS_UNTRUSTED;
int is_tgs = false;
size_t num_types = 0;
&upn_blob,
NULL,
PAC_ATTRIBUTE_FLAG_PAC_WAS_GIVEN_IMPLICITLY,
- &requester_sid_blob);
+ &requester_sid_blob,
+ &client_claims_blob);
if (!NT_STATUS_IS_OK(nt_status)) {
DBG_ERR("samba_kdc_get_pac_blobs failed: %s\n",
nt_errstr(nt_status));
DATA_BLOB **_upn_info_blob,
DATA_BLOB **_pac_attrs_blob,
uint64_t pac_attributes,
- DATA_BLOB **_requester_sid_blob);
+ DATA_BLOB **_requester_sid_blob,
+ DATA_BLOB **_client_claims_blob);
NTSTATUS samba_kdc_update_pac_blob(TALLOC_CTX *mem_ctx,
krb5_context context,
struct ldb_context *samdb,
krb5_error_code samba_kdc_validate_pac_blob(
krb5_context context,
- struct samba_kdc_entry *client_skdc_entry,
- const krb5_pac pac);
+ const struct samba_kdc_entry *client_skdc_entry,
+ const krb5_const_pac pac);
/*
* In the RODC case, to confirm that the returned user is permitted to