中校
- 注册时间
- 2011-4-12
- 金币
- 4969 个
- 威望
- 21 个
- 荣誉
- 3 个
累计签到:32 天 连续签到:0 天 [LV.50]初入江湖
|
本帖最后由 tiida2011 于 2012-6-20 14:07 编辑
本案是为客户的合作单位开发的无线网络的网页认证系统。
本系统实现基于Web的Windows Active Directory用户验证(域用户验证)与数据库用户验证,调用Wiwiz Auth API实现Web认证。
无线网络为客户现有环境,每层一个无线路由器接到交换机,以前用WPA,现改为Web网页认证方式。
网络结构经小幅改动,Web认证网关采用Wiwiz虚拟机。
认证页面程序使用PHP + MySQL,调用Wiwiz Auth API接口。
该公司有数百员工,网络使用方面规定较严格。多数员工只能上内网,少部分员工有使用外网的权限(客户OA系统中登记备案)。
MySQL数据库为客户的OA系统数据库。
有外网使用权限的员工可以使用公司的Windows域账户或者OA系统的账户登录并认证。
重要客户来访时接待人员还可以通过程序后台申请授权码。
认证页效果请参考下图(已隐去客户LOGO与名称):
【最新更新】
源码共享
index.php
auth.php
- <?php
- session_start();
- $AD_HOST = "XXXXXX:389"; // Active Directory服务器
-
- $userkey = "XXXXXX"; // Wiwiz User Key
- $loginSuccess = false;
- if(isset($_POST['login1'])) {
- if($_POST['AuthType'] == '0' ) { //员工通道 - 使用OA系统账户登录并认证
- $StaffId = $_POST['StaffId'];
- $Pswd = $_POST['Pswd'];
-
- if($StaffId == '')
- die("请输入工号!" );
- if($Pswd == '')
- die("请输入密码!" );
-
- $db = mysql_connect("localhost", "root") or die("OA系统连接异常!");
- //$db = mysql_connect(":/tmp/mysql.sock", "root") or die("OA系统连接异常!");
-
- mysql_select_db("oadb",$db);
- $result = mysql_query("SELECT count(staffid) as cnt FROM usermaster where staffid='". mysql_real_escape_string($StaffId) ."' and pswd='". mysql_real_escape_string($Pswd) ."'", $db);
-
- $cnt = mysql_result($result, 0, "cnt");
-
- mysql_close($db);
-
- if($cnt <> '0')
- $loginSuccess = true;
-
- } else if($_POST['AuthType'] == '1' ) { //员工通道 - 使用域账户登录并认证
- $DomainUser = $_POST['DomainUser'];
- $DomainPswd = $_POST['DomainPswd'];
- $Domain = $_POST['Domain'];
- if($DomainUser == '')
- die("请输入域账户名!" );
- if($DomainPswd == '')
- die("请输入域账户密码!" );
- if($Domain == '')
- die("请选择所在域!" );
-
- $conn = ldap_connect($AD_HOST) or die("连接失败!" );
- if($conn){
- //
- ldap_set_option ( $conn, LDAP_OPT_PROTOCOL_VERSION, 3 );
- ldap_set_option ( $conn, LDAP_OPT_REFERRALS, 0 ); // Binding to ldap server
- $bd = ldap_bind($conn, $DomainUser.'@'.$Domain, $DomainPswd); // or die ("域账户或密码错误。");
- if($bd)
- $loginSuccess = true;
- } else{
- echo "连接失败!";
- }
- }
- }
- if(isset($_POST['login2'])) { //访客通道(使用授权码认证)
- $AuthCode = $_POST['AuthCode'];
-
- if($AuthCode == '')
- die("请输授权码!" );
-
- $db = mysql_connect("localhost", "root") or die("OA系统连接异常!");
-
- mysql_select_db("oadb",$db);
- $result = mysql_query("SELECT count(id) as cnt FROM authcode where code='". mysql_real_escape_string($AuthCode). "'", $db);
-
- $cnt = mysql_result($result, 0, "cnt");
-
- mysql_close($db);
-
- if($cnt <> '0')
- $loginSuccess = true;
- }
-
- //
- // Do something you need.
- // e.g. verify the user
- // ......
- //
- if($loginSuccess == false) {
- echo "认证失败!"; // if user login failed, show an error message
- } else {
- //****************************************************
- // Step 2. Do the pre-auth by calling Wiwiz Auth API
- // IMPORTANT: Do this on your server side(ASP, C#, JSP/Servlet, PHP...),
- // but DO NOT do this on your client side (HTML/Javascript)
- //****************************************************
- // parameter "action" : REQUIRED!
- // set it to "1" to authenticate the user
- // set it to "0" to block the user
- $action = "1";
- // parameter "tokencode": REQUIRED!
- // set identical to the incoming parameter
- $tokencode = $_SESSION['tokencode'];
- // parameter "srvurl": REQUIRED!
- // set identical to the incoming parameter
- $srvurl = $_SESSION['srvurl'];
- // parameter "endtime" : OPTIONAL
- // Format: yyyy-mm-dd hh:MM:ss e.g. 2012-05-31 21:39:00
- // set this parameter to set the time to close the user's Internet connection
- // Note: the value must be url-encoded.
- // $endtime = urlencode('2012-05-31 21:39:00');
- $endtime = '';
- // parameter "postauth" : OPTIONAL
- // E.g. http://www.YourDomain.com
- // set this parameter to redirect to a specified URL after authenticated.
- // Note: the value should be url-encoded.
- //$postauth = urlencode("http://www.wiwiz.com");
- $postauth = '';
- $parameters = "?wiwiz_auth_api=1&ver=1.0". // parameter "wiwiz_auth_api" and "ver". Fixed value
- "&tokencode=". $tokencode . // parameter "tokencode". See above
- "&userkey=". $userkey . // parameter "userkey". Set your own User Key
- "&action=". $action . // parameter "action". See above
- "&endtime=". $endtime . // parameter "endtime". See above
- "&postauth=". $postauth; // parameter "postauth". See above
- $verifycode = file_get_contents($srvurl . $parameters);
- if (strpos ($verifycode, "ERR") === 0) {
- // if there is an error, show error code
- echo "Error: ". $verifycode;
- } else {
- // OK, now. do Step 3.
- //****************************************************
- // Step 3. Complete the Authentication by calling Wiwiz Auth API
- //****************************************************
- $redirectUrl = $srvurl. // use the value of incoming parameter "srvurl" as the redirection address
- "?wiwiz_auth_api_login=1". // parameter "wiwiz_auth_api_login"
- "&tokencode=". $tokencode . // parameter "tokencode", set identical to the incoming parameter
- "&verifycode=". $verifycode; // parameter "verifycode", set identical to the incoming parameter
- ob_start();
- header("Location: ". $redirectUrl); // finally, do the redirection
- ob_flush();
- // echo "<script>location.href="". $redirectUrl .""</script>";
- }
- }
- ?>
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
1
查看全部评分
-
|