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认证, wifidog流程, wifidog配置, dd wrt wifidog教程, dd wrt wifidog配置