网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
cas sso跨域登录实例
作者:
惉惉自喜
/ 发布于
2014/11/13
/
1159
用的cas得原生api,已在现网使用,此处传递密码并未加密,可以自行定义
import static org.springframework.util.StringUtils.*; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jasig.cas.CentralAuthenticationService; import org.jasig.cas.authentication.AuthenticationException; import org.jasig.cas.authentication.UsernamePasswordCredential; import org.jasig.cas.authentication.principal.Service; import org.jasig.cas.authentication.principal.SimpleWebApplicationServiceImpl; import org.jasig.cas.ticket.Ticket; import org.jasig.cas.ticket.TicketException; import org.jasig.cas.ticket.TicketGrantingTicket; import org.jasig.cas.ticket.registry.TicketRegistry; import org.jasig.cas.web.support.CookieRetrievingCookieGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.google.common.collect.Maps; @RestController @RequestMapping(value = "/rest/login") public class RestLoginController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired @Qualifier("ticketGrantingTicketCookieGenerator") private CookieRetrievingCookieGenerator tgtCookieGenerator; @Autowired private TicketRegistry ticketRegistry; @Autowired private CentralAuthenticationService centralAuthenticationService; @Value("applicationProperties['cas.client.callback']") private String DEFAULT_SERVICE; @RequestMapping(method = RequestMethod.GET) public String login(HttpServletRequest request, HttpServletResponse response, final String username, final String password, String service){ String tgtId = tgtCookieGenerator.retrieveCookieValue(request); final Map<String,Object> result = Maps.newHashMap(); Ticket ticket = null; if(hasText(tgtId)) { ticket = ticketRegistry.getTicket(tgtId); } try { if(ticket != null && !ticket.isExpired() && ticket instanceof TicketGrantingTicket) { result.put("result", true); result.put("st", centralAuthenticationService.grantServiceTicket(tgtId, getService(service))); result.put("message", "TGT还未失效,授权service成功"); tgtCookieGenerator.addCookie(request, response, tgtId); }else if(hasText(username) && hasText(password)) { tgtId = centralAuthenticationService.createTicketGrantingTicket(new UsernamePasswordCredential(username, password)); result.put("result", true); result.put("st", centralAuthenticationService.grantServiceTicket(tgtId, getService(service))); result.put("message", "authentication success"); tgtCookieGenerator.addCookie(request, response, tgtId); }else { //验证出现异常,用户名密码错误 result.put("result", false); result.put("message", "验证失败"); } } catch (TicketException | AuthenticationException e) { logger.error("tgt {} user {} 验证失败,{}", tgtId, username, e); result.put("result", false); result.put("message", "验证失败"); } return constructResult(result); } private static String constructResult(Map<String, Object> result) { //"success({'result':'failure'})" StringBuilder sb = new StringBuilder("success({"); int i = 0; for(Entry<String,Object> e:result.entrySet()) { sb.append("'" + e.getKey() + "'" + ":" + "'" +e.getValue() + "'"); i++; if(i != result.size()) { sb.append(","); } } sb.append("})"); return sb.toString(); } public static void main(String[] s) { final Map<String,Object> result = Maps.newHashMap(); result.put("result", true); result.put("message", "TGT还未失效,授权service成功"); System.out.println(constructResult(result)); } private Service getService(String service) { if(isEmpty(service)) { service = DEFAULT_SERVICE; } return new SimpleWebApplicationServiceImpl(service); } }
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
cas
sso
同语言下
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
.
根据出生日期和当前时间计算年龄
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
惉惉自喜
贡献的其它代码
(
1
)
.
cas sso跨域登录实例
地图
本站
我们
服务
版权
联系
回馈
博客