分类 wifidog服务器 下的文章

wifidog认证服务器Wiwiz Auth API集成示例代码(Java/JSP版)

<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>

<%@ page import="java.net.URL"%>
<%@ page import="java.net.URLConnection"%>
<%@ page import="java.net.URLEncoder"%>

<%
String userkey = "246DD22C084BB40E";    // 替换为你的User Key

//****************************************************
// 取得接收到的传入参数
//****************************************************

String pTokencode = request.getParameter("tokencode");  // 接收到的传入参数"tokencode"
String pSrvurl = request.getParameter("srvurl");        // 接收到的传入参数"srvurl"


/* 如必要,把传入参数存放于Session对象中 */
if(pTokencode != null)
    session.setAttribute("tokencode", pTokencode);
if(pSrvurl != null) 
    session.setAttribute("srvurl", pSrvurl);
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="zh">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<title> Wiwiz Auth API使用示例 </title>
</head>
<body>

<form method="post">

用户名: <input type="text" name="username" />
<br>

密码: <input type="password" name="pswd" />
<br>

<input type="submit" name="login" value="登录" />

<%
if(request.getParameter("login") != null) { // "登录"按钮按下后的处理

    //****************************************************
    // 第1步. 根据您的具体需要或业务,进行用户登录验证处理
    //****************************************************

    boolean loginSuccess = false;
    //
    // 根据系统自身的业务需求进行自己的账户验证/登录验证等处理
    //  ......
    //

    loginSuccess = true; // 这里假设用户登录已验证

    if(loginSuccess == false) {

        out.println("登录失败!");   // 如果登录失败则报错

    } else {

        //****************************************************
        // 第2步. 调用Wiwiz Auth API,进行预认证
        // 重要: 请在服务器端的程序中进行此处理(例如,ASP、C#、JSP/Servet、PHP...),
        //      而不要在直接客户端代码中进行此处理(例如,HTML/Javascript)
        //****************************************************

        // 参数 "action" : 必须!
        // 设置为"1"将使用户认证成功
        // 设置为"0"将使用户认证失败
        String action = "1";

        // 参数 "tokencode": 必须!
        // 设置与同名传入参数相同的值
        String tokencode = (String) session.getAttribute("tokencode");

        // 参数 "srvurl": 必须!
        // 设置与同名传入参数相同的值
        String srvurl = (String) session.getAttribute("srvurl");

        // 参数 "endtime" : 可选
        // 格式: yyyy-mm-dd hh:MM:ss  例如: 2012-05-31 21:39:00
        // 设置此参数将使用户的Internet连接在指定时间关闭
        // 注意: 对此参数的值必须进行url编码  
        String endtime = URLEncoder.encode("2012-05-31 21:39:00", "utf-8");

        // 参数 "postauth" : 可选
        // 例如: http://www.YourDomain.com
        // 设置此参数将设置用户在通过认证后显示的页面地址
        // 注意: 对此参数的值应进行url编码   
        String postauth = "http://www.wiwiz.com";

        String parameters =
                "wiwiz_auth_api=1&ver=1.0"+ // 参数 "wiwiz_auth_api" 与 "ver". 固定值
                "&tokencode="+ tokencode +  // 参数 "tokencode". 设置方法参考上面的说明
                "&userkey="+ userkey +      // 参数 "userkey". 设置方法参考上面的说明
                "&action="+ action +        // 参数 "action". 设置方法参考上面的说明
                "&endtime="+ endtime +      // 参数 "endtime". 设置方法参考上面的说明
                "&postauth="+ postauth;     // 参数 "postauth". 设置方法参考上面的说明

        URL u = new URL(srvurl);            // 使用传入参数"srvurl"的值作为请求地址
        URLConnection uc = u.openConnection();
        uc.setDoOutput(true);
        uc.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        PrintWriter pw = new PrintWriter(uc.getOutputStream());
        pw.println(parameters);
        pw.close();

        BufferedReader in = new BufferedReader(
        new InputStreamReader(uc.getInputStream()));
        String verifycode = in.readLine();  // 获取verifycode,即Wiwiz服务端返回的验证结果
        in.close();

        String userstring = "username:" + request.getParameter("username"); // 设置自定义追踪信息(可选),本例中设为用户名

        if(verifycode.startsWith("ERR")) {
            // 如果报错,则显示错误代码
            out.println("Error: "+ verifycode);

        } else {
            // 如没有报错则进行第3步。

            //****************************************************
            // 第3步. 调用Wiwiz Auth API,完成认证
            //****************************************************  
            String redirectUrl = srvurl +           // 使用传入参数"srvurl"的值作为跳转地址的前缀
                    "?wiwiz_auth_api_login=1"+      // 参数 "wiwiz_auth_api_login",固定值
                    "&tokencode="+ tokencode +      // 参数 "tokencode",设置与同名传入参数相同的值
                    "&verifycode="+ verifycode +    // 参数 "verifycode",Wiwiz服务端返回的验证结果
                    "&userstring=" + userstring;    // 参数 "userstring"(可选),用户设置的自定义追踪信息

            response.sendRedirect(redirectUrl); // 最后,进行跳转
        }
    }
}
%>

</form>

</body>
</html>

本文章由 http://www.wifidog.pro/2015/03/20/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8java-jsp%E7%89%88.html 整理编辑,转载请注明出处

wifidog 认证服务器如何授权和使用用户配置文件

创建配置文件
1.创建必要的内容类型过滤器
这些数据类型在配置文件中可能会用到。
每个内容类型过滤器的格式是标准陈列:在内容类型执行的一组函数。格式是array(array(callback_funct, array(callback_funct_parameters))
注意的是callback_funct表示对象已被验证,所以它没有静态的classname。
例如:获取文档子类别的Simple内容类型,陈列应为

array(array('isSimpleContent'), array('isContentType',array(array('File'))) ); 

注意的是第二个callback:isContentType,用了单参数。当$criteria_array指定callback参数为列表,将“File”传到“isContentType”应该写成array(array('File'))。
你也许至少需要以下过滤器:

**Avatars**
array ( 
  array ( 
    'isContentType', array ( 
      array ( 
       'Avatar', 
      ), 
    ), 
  ), 
) 

**Hyperlink only**
array ( 
  array ( 
    'isExactContentType', array ( 
      array ( 
        'HyperLink', 
      ), 
    ), 
  ), 
) 

**SimpleLangstring only**
array ( 
  array ( 
    'isExactContentType', array ( 
      array ( 
        'TrivialLangstring', 
      ), 
    ), 
  ), 
) 

**SimplePictures** 
array ( 
  array ( 
    'isContentType', array ( 
      array ( 
        'SimplePicture', 
      ), 
    ), 
  ), 
) 

**SimpleString only**
array ( 
  array ( 
    'isExactContentType', array ( 
      array ( 
        'SimpleString', 
      ), 
    ), 
  ), 
) 

2 创建配置文件模版
包括配置文件的字段列表,当用户进行编辑,其它用户浏览时可见的选项标签。
3 将配置文件模版与网络进行关联
4 编辑你自己的配置文件进行测试

数据模型
Network_has_profile_templates
  - Network_id:每个profile_field只有一个网络
  - Profile_template_id:配置文件模版id
  - Is_invisible boolean:用户是否希望用匿名模式

Profile_templates
  - Profile_template_id guuid:配置文件id
  - Creation_date timestamp

Profile_template_fields
基本上是用户可以进行填充的数据字段列表。被管理员用来指定用户配置文件中可得的字段。
   - Display_label content_id:配置文件显示界面的字段标签。Content id必须可本地化,最好是个图片。
   - Admin_label content_id:用户编辑界面的字段标签。
   - Content_filter filter_id:用来列出指定内容类型的过滤器。这些内容类型允许被此配置文件字段的用户当作函数来进行记录。
   - UI代码应该保存在ContentTypeFilter类别当中。
   - Order:配置文件中字段显示的顺序
   - Semantic_id text:用户不可见。这字段有两个作用:
     1.最终用于允许输出配置文件的微格式和XML算法。
     2.一些semantic_id函数对于wifidog是有特殊意义的。例如配置文件中存在foaf:img的元素,它将用来在在线用户列表中显示用户的自定义头像。用来指定网络配置文件字段的管理界面必须列出所有对wifidog有特殊意义的semantic_id函数。

User_has_profiles
用配置文件连接用户表格
   - User_id:用户id
   - Profile_id:配置文件id
   - Is_invisible Boolean:用户是否希望用匿名模式

Profiles
从技术上讲,我们应该直接在user_profile_fields连接用户表格,但这不可取。配置文件和user_has_profiles tables被替换的原因是:
 1.允许在用户创建自己的配置文件前添加用户协议。
 2.允许更便捷的保存非数据元素,例如可视模式,是否其它用户可以发送用户短信息等等。
 3.如果用户需要,允许每个网络都有一个配置文件。
  - Profile_id guuid:配置文件id
  - Creation_date timestamp

Profile_fields
由终端用户输入的配置文件函数。
  - Content_id:当前连接的数据
  - Last_modified timestamp:起初不会被应用,因为它要求每个内容类型要有调节器和processAdminUI并反馈数据是否被正确修改。这实际上并不困难并且如果我们想衡量用户如何使用和更新他们的配置文件的话,这点都是最基本的。

ContentTypeFilter
ContentTypeFilter已存在并且应用在内容管理器的一些部分。基本上它会在每个备用ContentType以静态的方式用自己的参数启用函数引用。一些Content类的函数也是因为这个被指定的。当它非常灵活的运转时,从代码指定过滤器是唯一的方法。我们需要UI和数据表示法,这会很困难但并非不可能。困难点有:
  - 列举可得的滤函数
  - 解决已存在的过滤器由于代码中的滤函数丢失导致失效,从过滤器永久删除字段。
  - 在callback函数参数输入的界面,它以能够让PHP在不使用eval()的情况下

本文章由 http://www.wifidog.pro/2015/03/13/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html 整理编辑,转载请注明出处

在SuSE安装wifidog认证服务器和网关

在SuSE安装认证服务器和网关

在openSuSE 10.3安装wifidog
认证服务器和网关在同台设备中安装完毕。以下是openSuSE的详细安装指南。这个安装是非常初级的,所以请验证或更正。
--安装openSuSE10.3需要全部软件(需要至少7GB的硬盘空间)
--更新openSuSE10.3

安装wifidog认证服务器
--安装所有PHP5扩展
--安装postgresql-server
--按照http://www.novell.com/coolsolutions/feature/595.html中的指南启动apache(启动postgresql而不是mysql)
--将目录更改为

cd /srv/www 

--用以下命令下载认证服务器

svn checkout  https://dev.wifidog.org/svn/trunk/wifidog-auth 

--将目录改为

cd /etc/apache2 

--在default-server.conf文件中,将所有“/srv/www/htdocs”改成“/srv/www/wifidog-auth/wifidog”
--重启apache服务器
--用浏览器打开http://localhost/install.php,按指南进行操作。
当运行PHP安装时:
--进入到postgresql执行命令

su – postgres 

--当创建完数据库后,应该创建有username/groupname wwwrun/www的指定目录并且用以下命令创建所有权。用x84-64 openSuSE结构PHP安装器将无法指定usrname/groupname。X86和X86-64用以下命令:

su wwwrun 
mkdir ‘indicated files’; 
chown -R wwwrun ‘indicated files’ 
chgrp -R www `indicated files’ 

--在连接到数据库之前,必须在/var/lib/pqsql/data中更改pg_hba.conf。所以将目录改为

cd /var/lib/pgsql/data 

--编辑pg_hba.conf,将“ident sameuser”变更为“md5 samerole”
默认设置:

local all all ident sameuser 
host all all 127.0.0.1/32 ident sameuser 
host all all ::1/128 ident sameuser

新设置:

local all all md5 samerole 
host all all 127.0.0.1/32 md5 samerole 
host all all ::1/128 md5 samerole

--重启postgresql服务器
--注:为了在第一次安装后能用命令“su-postrges”直接连接到数据库,重启旧值和postgresql。在启运认证服务器之前,还原“md5 samerole”。
在安装完PHP后,你会被重新定向到wifidog认证页面。做为管理员第一次登录后:
--配置认证服务器
--用任意一个本地IP地址(例如192.168.0.1)来修改本地主机。

Wifidog网关安装
--用以下命令在本地目录ex./root下载wifidog软件

svn checkout  https://dev.wifidog.org/svn/trunk/wifidog

--更改目录为

cd/root/wifidog

--安装网关的命令

./autogen.sh
make 
make install 

--连接到第二个有线网络卡并进行配置
按指南将SuSE10做为路由器进行安装,指南可从以下网页获得:http://www.novell.com/coolsolutions/feature/16579.html
--通过服务器内部卡将另一台终端电脑连接到服务器
--测试通过服器将另一台电脑与互联网这间进行连接是否有效
--创建/usr/local/etc目录

cp /root/wifidog/wifidog.conf /usr/local/etc/. 
cp /root/wifidog/wifidog-msg.html /usr/local/etc/. 

--在wifidog.conf文件中依据你硬件和服务器的配置对内部和外部设备进行配置。例如:

GatewayID default 
    ExternalInterface eth0 
    GatewayInterface eth2 
    AuthServer { 
        Hostname 192.168.0.1 
        SSLAvailable no 
        SSLPort 443 
        HTTPPort 80 
        Path / 
} 

--192.168.0.1是将服务器作为路由器进行安装时,嵌入到内部卡的任意IP地址。这个地址也相当于是认证服务器的默认虚拟主机的用户名。
--重启服务器
--用以下命令启动网关

wifidog -f -d 7 

通过内部无线路由器连接到wifidog
--断开终端PC的内部以太网网线,并连接到有内部无线路由器或接入点的LAN。
--配置将作为接入点的外部路由器和内部路由器。如以下所示:
http://www.dslreports.com/faq/11233
--通过路由器与终端PC进行连接,并转到wifidog的登录页面。
--如果在连接时遇到问题,用以下命令重启网络:

/etc/init.d/network restart

本文章由 http://www.wifidog.pro/2015/03/11/Suse%E5%AE%89%E8%A3%85wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E7%BD%91%E5%85%B3.html 整理编辑,转载请注明出处

在Ubuntu Linux安装wifidog认证服务器(2)

Apache 2配置文件
我们需要变更文件路径。我们认为这台服务器不应该有其它“网络”使用。如果这样,你就需要学习如何配置apache2。

nano /etc/apache2/sites-available/default

将以下内容:(在第五行)

DocumentRoot /var/www/

更改为

DocumentRoot /var/www/wifidog-auth/wifidog

重启apache2:

sudo /etc/init.d/apache2 restart

在wifidog.conf配置语言环境
如果你想翻译所有语言,你需要创建所有语言环境。如果你的磁盘空间很充足,你可以能过各种方法进行操作。最简单的方法是在ubuntu执行以下命令:

sudo apt-get install language-pack-bg-base language-pack-de-base language-pack-el-base language-pack-es-base language-pack-fr-base language-pack-it-base language-pack-ja-base language-pack-pt-base language-pack-sv-base

你也许想在config.php文件中设置门户页面的默认语言

sudo nano /var/www/wifidog-auth/wifidog/config.php

define('DEFAULT_LANG', 'fr_CA');

改为

define('DEFAULT_LANG', 'en_US');

设置邮件服务器
你需要有有效的邮件程序来发送帐号确认信息。
安装postfix

sudo apt-get install postfix

选择“internet site with smart host”配置选项并回答下面一系列问题。

配置认证服务器
访问http://your-domaine.com/install.php并按指南操作。也可以参照以下步骤。
如果你还没有配置dns/domain重定向,你可以用“ifconfig”命令获取IP地址。
你必须执行

cat /tmp/dog_cookie.txt

然后在浏览器中点击下一步(在dog_cookie.txt文件中会需要密码)
1)First screen
在postgres创建一个wifidog用户

su - postgres
createuser wifidog --pwprompt 

当需要插入密码时执行

wifidogtest

如果你有PostgreSQL 8.1:三个问题的回答都为否。如果你有PostgreSQL7.4:两个问题的回答为否。
创建此用户的数据库

createdb wifidog --encoding=UTF-8 --owner=wifidog

2)Second screen:你需要复制粘贴这一长串的命令,点击刷新和下一步。此操作最简单的方法是看你是否将SSH链接到你的box。

sudo su -

然后复制整个命令包
3)Third screen:检测已安装过的软件。如果你按此指南操作,你已经具有了所有安装的条件。安装simplepie,然后安装PHPMailer,下一步安装feedpressreview,下一步安装Smarty。(虽然系统没有检测到,但Phlickr已经被安装)点击下一步。
4) Forth screen: 添加DB信息

移除安装文件
当然,唯一能访问install.php文件的只有你。你将需要将install.php文件移出公众视线。
1)进入到wifidog目录(/var/www/wifidog-auth/wifidog)

cd /var/www/wifidog-auth/wifidog

2)将install.php文件移到根目录,他人无法访问:

mv install.php ../install.php

注:你可以将它移到你选的任何位置,只要不是公用。
编辑install.php文件的第931行,移除“window.location.reload(true);”

本文章由 http://www.wifidog.pro/2015/03/10/Ubuntu%E5%AE%89%E8%A3%85wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8-2.html 整理编辑,转载请注明出处