nilsteampassnet / TeamPass

Collaborative Passwords Manager
https://www.teampass.net
1.63k stars 532 forks source link

Roles -> LDAP Syncronization is not working because objectGUID is not integer in Active Directory #4207

Open AJH3343 opened 1 month ago

AJH3343 commented 1 month ago

Page on which it happened

index.php?page=roles

Steps to reproduce

  1. Roles -> LDAP syncronization

At least in our active directory objectGUID type is octet string (not integer) Example guid image

Using this function I can return it as string public function objectGuidToUuidString(string $objectGuid): string { $unpacked = array_map('dechex', unpack('V_a/v2_b/n4_c', $objectGuid)); $unpacked['_a'] = str_pad($unpacked['_a'], 8, '0', STR_PAD_LEFT); $unpacked['_b1'] = str_pad($unpacked['_b1'], 4, '0', STR_PAD_LEFT); $unpacked['_b2'] = str_pad($unpacked['_b2'], 4, '0', STR_PAD_LEFT); $unpacked['_c1'] = str_pad($unpacked['_c1'], 4, '0', STR_PAD_LEFT); $unpacked['_c2'] = str_pad($unpacked['_c2'], 4, '0', STR_PAD_LEFT); $unpacked['_c3'] = str_pad($unpacked['_c3'], 4, '0', STR_PAD_LEFT); $unpacked['_c4'] = str_pad($unpacked['_c4'], 4, '0', STR_PAD_LEFT); return "{$unpacked['_a']}-{$unpacked['_b1']}-{$unpacked['_b2']}-{$unpacked['_c1']}-{$unpacked['_c2']}{$unpacked['_c3']}{$unpacked['_c4']}"; }

$adGroupId = $this->objectGuidToUuidString($group[$settings['ldap_guid_attibute']][0]); echo $adGroupId; // returns "123dec82-0f05-4750-a2b4-a32950072495"

Can you advice how to change code ActiveDirectoryExtra.php to get it working ? And does other files need changing because of this modification? $adGroupId variable is currently expected to be integer but it's not when using Active Directory

Expected behaviour

Return AD groups

Actual behaviour

No results

Server configuration

Operating system: Windows NT 10.0 build 20348 (Windows Server 2022) AMD64

Web server: Apache/2.4.59 (Win64) PHP/8.3.7

Database: 8.4.0

PHP version: 8.3.7

Teampass version: 3.1.2

Teampass configuration file:

'max_latest_items' => '10',
'enable_favourites' => '1',
'show_last_items' => '1',
'enable_pf_feature' => '0',
'log_connections' => '1',
'log_accessed' => '1',
'time_format' => 'H:i:s',
'date_format' => 'd/m/Y',
'duplicate_folder' => '0',
'item_duplicate_in_same_folder' => '0',
'duplicate_item' => '0',
'number_of_used_pw' => '3',
'manager_edit' => '1',
'cpassman_dir' => 'C:/www/htdocs/teampass',
'cpassman_url' => 'http://<anonym_url>
'favicon' => 'http://<anonym_url>/favicon.ico',
'path_to_upload_folder' => 'C:/www/htdocs/teampass/upload',
'path_to_files_folder' => 'C:/www/htdocs/teampass/files',
'url_to_files_folder' => 'http://<anonym_url>/files',
'activate_expiration' => '0',
'pw_life_duration' => '0',
'maintenance_mode' => '1',
'enable_sts' => '0',
'encryptClientServer' => '1',
'teampass_version' => '3.1.2',
'ldap_mode' => '1',
'ldap_type' => 'ActiveDirectory',
'ldap_user_attribute' => 'sAMAccountName',
'ldap_ssl' => '0',
'ldap_tls' => '0',
'ldap_port' => '389',
'richtext' => '0',
'allow_print' => '0',
'roles_allowed_to_print' => '0',
'show_description' => '1',
'anyone_can_modify' => '0',
'anyone_can_modify_bydefault' => '0',
'nb_bad_authentication' => '0',
'utf8_enabled' => '1',
'restricted_to' => '0',
'restricted_to_roles' => '0',
'enable_send_email_on_user_login' => '0',
'enable_user_can_create_folders' => '0',
'insert_manual_entry_item_history' => '0',
'enable_kb' => '0',
'enable_email_notification_on_item_shown' => '0',
'enable_email_notification_on_user_pw_change' => '0',
'custom_logo' => '',
'custom_login_text' => '',
'default_language' => 'english',
'send_stats' => '0',
'send_statistics_items' => 'stat_country;stat_users;stat_items;stat_items_shared;stat_folders;stat_folders_shared;stat_admins;stat_managers;stat_ro;stat_mysqlversion;stat_phpversion;stat_teampassversion;stat_languages;stat_kb;stat_suggestion;stat_customfields;stat_api;stat_2fa;stat_agses;stat_duo;stat_ldap;stat_syslog;stat_stricthttps;stat_fav;stat_pf;',
'send_stats_time' => '1714392818',
'get_tp_info' => '1',
'send_mail_on_user_login' => '0',
'sending_emails' => '0',
'nb_items_by_query' => 'auto',
'enable_delete_after_consultation' => '0',
'enable_personal_saltkey_cookie' => '0',
'personal_saltkey_cookie_duration' => '31',
'email_smtp_server' => '<removed>'
'email_smtp_auth' => '',
'email_auth_username' => '<removed>'
'email_auth_pwd' => '<removed>'
'email_port' => '25',
'email_security' => '',
'email_server_url' => '',
'email_from' => '<removed>'
'email_from' => '<removed>'
'pwd_maximum_length' => '40',
'google_authentication' => '0',
'delay_item_edition' => '0',
'allow_import' => '0',
'proxy_ip' => '<removed>'
'proxy_port' => '',
'upload_maxfilesize' => '10mb',
'upload_docext' => 'doc,docx,dotx,xls,xlsx,xltx,rtf,csv,txt,pdf,ppt,pptx,pot,dotx,xltx',
'upload_imagesext' => 'jpg,jpeg,gif,png',
'upload_pkgext' => '7z,rar,tar,zip',
'upload_otherext' => 'sql,xml',
'upload_imageresize_options' => '1',
'upload_imageresize_width' => '800',
'upload_imageresize_height' => '600',
'upload_imageresize_quality' => '90',
'use_md5_password_as_salt' => '0',
'ga_website_name' => 'TeamPass for ChangeMe',
'api' => '0',
'subfolder_rights_as_parent' => '0',
'show_only_accessible_folders' => '0',
'enable_suggestion' => '0',
'otv_expiration_period' => '7',
'default_session_expiration_time' => '60',
'duo' => '0',
'enable_server_password_change' => '0',
'bck_script_path' => 'C:/www/htdocs/teampass/backups',
'bck_script_filename' => 'bck_teampass',
'syslog_enable' => '0',
'syslog_host' => '<removed>'
'syslog_port' => '514',
'manager_move_item' => '0',
'create_item_without_password' => '0',
'otv_is_enabled' => '0',
'agses_authentication_enabled' => '0',
'item_extra_fields' => '0',
'saltkey_ante_2127' => 'none',
'migration_to_2127' => 'done',
'files_with_defuse' => 'done',
'timezone' => 'Europe/Helsinki',
'enable_attachment_encryption' => '1',
'personal_saltkey_security_level' => '50',
'ldap_new_user_is_administrated_by' => '0',
'disable_show_forgot_pwd_link' => '0',
'offline_key_level' => '0',
'enable_http_request_login' => '0',
'ldap_and_local_authentication' => '0',
'secure_display_image' => '1',
'upload_zero_byte_file' => '0',
'upload_all_extensions_file' => '0',
'bck_script_passkey' => '<removed>'
'admin_2fa_required' => '1',
'password_overview_delay' => '4',
'copy_to_clipboard_small_icons' => '1',
'duo_ikey' => '<removed>'
'duo_skey' => '<removed>'
'duo_host' => '<removed>'
'duo_failmode' => 'secure',
'roles_allowed_to_print_select' => '',
'clipboard_life_duration' => '30',
'mfa_for_roles' => '',
'tree_counters' => '0',
'settings_offline_mode' => '0',
'settings_tree_counters' => '0',
'enable_massive_move_delete' => '0',
'email_debug_level' => '0',
'ga_reset_by_user' => '',
'onthefly-backup-key' => '<removed>'
'onthefly-restore-key' => '<removed>'
'ldap_user_dn_attribute' => 'distinguishedName',
'ldap_dn_additional_user_dn' => '',
'ldap_user_object_filter' => '(objectCategory=Person),(sAMAccountName=*)',
'ldap_bdn' => '<removed>',
'ldap_hosts' => '<removed>'
'ldap_password' => '<removed>'
'ldap_username' => '<removed>',
'api_token_duration' => '60',
'last_folder_change' => '',
'enable_tasks_manager' => '1',
'task_maximum_run_time' => '300',
'tasks_manager_refreshing_period' => '20',
'maximum_number_of_items_to_treat' => '100',
'ldap_tls_certifacte_check' => 'LDAP_OPT_X_TLS_NEVER',
'enable_tasks_log' => '0',
'upgrade_timestamp' => '1716984818',
'enable_ad_users_with_ad_groups' => '1',
'enable_ad_user_auto_creation' => '0',
'ldap_guid_attibute' => 'objectGUID',
'sending_emails_job_frequency' => '2',
'user_keys_job_frequency' => '1',
'items_statistics_job_frequency' => '5',
'users_personal_folder_task' => '',
'clean_orphan_objects_task' => '',
'purge_temporary_files_task' => '',
'rebuild_config_file' => '',
'reload_cache_table_task' => '',
'maximum_session_expiration_time' => '60',
'items_ops_job_frequency' => '1',
'enable_refresh_task_last_execution' => '1',
'ldap_group_objectclasses_attibute' => 'group',
'pwd_default_length' => '14',
'tasks_log_retention_delay' => '30',
'oauth2_enabled' => '0',
'oauth2_client_id' => '',
'oauth2_client_secret' => '',
'oauth2_client_endpoint' => '',
'oauth2_client_token' => '',
'oauth2_client_scopes' => 'openid,profile,email',
'oauth2_client_appname' => 'Login with Azure',

Updated from an older Teampass or fresh install: Fresh Install

Client configuration

Browser: -

Operating system: - bits

Logs

Web server error log

 -  ()

Teampass 10 last system errors

Log from the web-browser developer console (CTRL + SHIFT + i)

Insert the log here and especially the answer of the query that failed.
AJH3343 commented 1 month ago

With my modifications to ActiveDirectoryExtra.php now database table teampass_ldap_groups_roles has the correct objectGUID formatting image Which other files I need to modify ?