通常情况下我们使用cas都是在客户端的web.xml中配置cas的过滤器,当有请求过来,会自动跳转cas的登陆页面,如果你不想使用登陆页面,而是想把cas作为一项服务,在url中带有用户名和密码到cas进行验证。
解决方案。
在jetty-distribution-7.4.5.v20110725\webapps\cas-server\WEB-INF\view\jsp\default\ui\casLoginView.jsp页面添加代码
<%
String auto = request.getParameter("auto");
if (auto != null && auto.equals("true") ){
%><html>
<head>
<scriptlanguage="JavaScript">
functiondoAutoLogin() {
document.forms[0].submit();
}
</script>
</head>
<bodyοnlοad="doAutoLogin();">
<formid="credentials" method="POST" action="<%=request.getContextPath() %>/login?service=<%=request.getParameter("service") %>">
<inputtype="hidden" name="lt" value="${loginTicket}"/>
<inputtype="hidden" name="execution"value="${flowExecutionKey}" />
<input type="hidden"name="_eventId" value="submit" />
<inputtype="hidden" name="username" value="<%=request.getParameter("username") %>" />
<inputtype="hidden" name="password" value="<%=request.getParameter("password") %>" />
<inputtype="submit" style="visibility: hidden;" />
</form>
</body>
</html>
<%
} else {
%>
《———页面源代码—————》
<%
}
%>
然后在浏览器中输入http://localhost:8080/cas-server/login?service=http://www.baidu.com&auto=true&username=admin&password=admin访问就会直接进行登录,而不会跳转至登陆页面了,如果出错则会跳转至登陆页面进行错误提醒;验证成功后则会跳转至service=http://www.baidu.com页面。
参考资料
https://wiki.jasig.org/display/CAS/Using+CAS+without+the+Login+Screen