当前位置: 首页>>代码示例>>PHP>>正文


PHP ntlm_sasl_client_class::typeMsg1方法代码示例

本文整理汇总了PHP中ntlm_sasl_client_class::typeMsg1方法的典型用法代码示例。如果您正苦于以下问题:PHP ntlm_sasl_client_class::typeMsg1方法的具体用法?PHP ntlm_sasl_client_class::typeMsg1怎么用?PHP ntlm_sasl_client_class::typeMsg1使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ntlm_sasl_client_class的用法示例。


在下文中一共展示了ntlm_sasl_client_class::typeMsg1方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: authenticate


//.........这里部分代码省略.........
                 }
             }
             if (empty($authtype)) {
                 $this->setError('No supported authentication methods found');
                 return false;
             }
             self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL);
         }
         if (!in_array($authtype, $this->server_caps['AUTH'])) {
             $this->setError("The requested authentication method \"{$authtype}\" is not supported by the server");
             return false;
         }
     } elseif (empty($authtype)) {
         $authtype = 'LOGIN';
     }
     switch ($authtype) {
         case 'PLAIN':
             // Start authentication
             if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) {
                 return false;
             }
             // Send encoded username and password
             if (!$this->sendCommand('User & Password', base64_encode("" . $username . "" . $password), 235)) {
                 return false;
             }
             break;
         case 'LOGIN':
             // Start authentication
             if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) {
                 return false;
             }
             if (!$this->sendCommand("Username", base64_encode($username), 334)) {
                 return false;
             }
             if (!$this->sendCommand("Password", base64_encode($password), 235)) {
                 return false;
             }
             break;
         case 'XOAUTH2':
             //If the OAuth Instance is not set. Can be a case when PHPMailer is used
             //instead of PHPMailerOAuth
             if (is_null($OAuth)) {
                 return false;
             }
             $oauth = $OAuth->getOauth64();
             // Start authentication
             if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) {
                 return false;
             }
             break;
         case 'NTLM':
             /*
              * ntlm_sasl_client.php
              * Bundled with Permission
              *
              * How to telnet in windows:
              * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx
              * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication
              */
             require_once 'extras/ntlm_sasl_client.php';
             $temp = new stdClass();
             $ntlm_client = new ntlm_sasl_client_class();
             //Check that functions are available
             if (!$ntlm_client->initialize($temp)) {
                 $this->setError($temp->error);
                 $this->edebug('You need to enable some modules in your php.ini file: ' . $this->error['error'], self::DEBUG_CLIENT);
                 return false;
             }
             //msg1
             $msg1 = $ntlm_client->typeMsg1($realm, $workstation);
             //msg1
             if (!$this->sendCommand('AUTH NTLM', 'AUTH NTLM ' . base64_encode($msg1), 334)) {
                 return false;
             }
             //Though 0 based, there is a white space after the 3 digit number
             //msg2
             $challenge = substr($this->last_reply, 3);
             $challenge = base64_decode($challenge);
             $ntlm_res = $ntlm_client->NTLMResponse(substr($challenge, 24, 8), $password);
             //msg3
             $msg3 = $ntlm_client->typeMsg3($ntlm_res, $username, $realm, $workstation);
             // send encoded username
             return $this->sendCommand('Username', base64_encode($msg3), 235);
         case 'CRAM-MD5':
             // Start authentication
             if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) {
                 return false;
             }
             // Get the challenge
             $challenge = base64_decode(substr($this->last_reply, 4));
             // Build the response
             $response = $username . ' ' . $this->hmac($challenge, $password);
             // send encoded credentials
             return $this->sendCommand('Username', base64_encode($response), 235);
         default:
             $this->setError("Authentication method \"{$authtype}\" is not supported");
             return false;
     }
     return true;
 }
开发者ID:pingyen,项目名称:PHPMailer,代码行数:101,代码来源:class.smtp.php


注:本文中的ntlm_sasl_client_class::typeMsg1方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。