1<?php 2/** 3 * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> 4 * 5 * @license GNU AGPL version 3 or any later version 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU Affero General Public License as 9 * published by the Free Software Foundation, either version 3 of the 10 * License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU Affero General Public License for more details. 16 * 17 * You should have received a copy of the GNU Affero General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 * 20 */ 21 22namespace Icewind\SMB; 23 24use Icewind\SMB\Exception\Exception; 25 26/** 27 * Use existing kerberos ticket to authenticate 28 */ 29class KerberosAuth implements IAuth { 30 public function getUsername(): ?string { 31 return 'dummy'; 32 } 33 34 public function getWorkgroup(): ?string { 35 return 'dummy'; 36 } 37 38 public function getPassword(): ?string { 39 return null; 40 } 41 42 public function getExtraCommandLineArguments(): string { 43 return '-k'; 44 } 45 46 public function setExtraSmbClientOptions($smbClientState): void { 47 $success = (bool)smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); 48 $success = $success && smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); 49 50 if (!$success) { 51 throw new Exception("Failed to set smbclient options for kerberos auth"); 52 } 53 } 54} 55