CAS 整合/v1/tickets/{TGT id} 与/serviceValidate ,生成ST时直接验证其合法性。
来源:互联网 发布:通信网络维护简介 编辑:程序博客网 时间:2024/06/05 06:57
CAS 整合/v1/tickets/{TGT id} 与/serviceValidate ,生成ST时直接验证其合法性。
其目的是模拟客户端(C/S结构)调用服务器去验证TGT的合法性,省略调用/serviceValidate。
修改如下:
TicketGrantingTicketResource.java
成功后直接返回( true / false )
/* * Licensed to Jasig under one or more contributor license * agreements. See the NOTICE file distributed with this work * for additional information regarding copyright ownership. * Jasig licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a * copy of the License at the following location: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */package org.jasig.cas.integration.restlet;import javax.validation.constraints.NotNull;import org.jasig.cas.CentralAuthenticationService;import org.jasig.cas.authentication.principal.SimpleWebApplicationServiceImpl;import org.jasig.cas.ticket.InvalidTicketException;import org.jasig.cas.validation.Assertion;import org.jasig.cas.validation.Cas20ProtocolValidationSpecification;import org.jasig.cas.validation.ValidationSpecification;import org.jasig.cas.web.support.ArgumentExtractor;import org.restlet.Context;import org.restlet.Request;import org.restlet.Response;import org.restlet.data.Form;import org.restlet.data.MediaType;import org.restlet.data.Status;import org.restlet.representation.Representation;import org.restlet.representation.Variant;import org.restlet.resource.Delete;import org.restlet.resource.Post;import org.restlet.resource.ServerResource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;/** * Implementation of a Restlet resource for creating Service Tickets from a * TicketGrantingTicket, as well as deleting a TicketGrantingTicket. * * @author Scott Battaglia * @since 3.3 * */public final class TicketGrantingTicketResource extends ServerResource { private static final Logger LOGGER = LoggerFactory.getLogger(TicketGrantingTicketResource.class); @Autowired private CentralAuthenticationService centralAuthenticationService; /** Extracts parameters from Request object. */ @NotNull private ArgumentExtractor argumentExtractor; @NotNull private Class<?> validationSpecificationClass = Cas20ProtocolValidationSpecification.class; private String ticketGrantingTicketId; public void init(final Context context, final Request request, final Response response) { super.init(context, request, response); this.ticketGrantingTicketId = (String) request.getAttributes().get("ticketGrantingTicketId"); this.setNegotiated(false); this.getVariants().add(new Variant(MediaType.APPLICATION_WWW_FORM)); } @Delete public void removeRepresentations() { this.centralAuthenticationService.destroyTicketGrantingTicket(this.ticketGrantingTicketId); getResponse().setStatus(Status.SUCCESS_OK); }@Post public void acceptRepresentation(final Representation entity) { final Form form = new Form(entity); final String serviceUrl = form.getFirstValue("service"); try { final String serviceTicketId = this.centralAuthenticationService.grantServiceTicket( this.ticketGrantingTicketId, new SimpleWebApplicationServiceImpl(serviceUrl)); //Modify by lumz for validate Service Tickets 2016年4月6日15:09:41 String resultReturn = "false"; if (new SimpleWebApplicationServiceImpl(serviceUrl) == null || serviceTicketId == null) { LOGGER.debug("Could not identify service and/or service ticket. Service: {}, Service ticket id: {}", new SimpleWebApplicationServiceImpl(serviceUrl), serviceTicketId); return; } final Assertion assertion = centralAuthenticationService.validateServiceTicket(serviceTicketId, new SimpleWebApplicationServiceImpl(serviceUrl)); final ValidationSpecification validationSpecification = this.getCommandClass(); if (validationSpecification.isSatisfiedBy(assertion)) { resultReturn = "ture"; }else{ resultReturn = "false"; } getResponse().setEntity(resultReturn, MediaType.TEXT_PLAIN);// getResponse().setEntity(serviceTicketId, MediaType.TEXT_PLAIN); } catch (final InvalidTicketException e) { getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND, "TicketGrantingTicket could not be found."); } catch (final Exception e) { LOGGER.error(e.getMessage(), e); getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage()); } } private ValidationSpecification getCommandClass() { try { return (ValidationSpecification) this.validationSpecificationClass.newInstance(); } catch (final Exception e) { throw new RuntimeException(e); } }}
0 0
- CAS 整合/v1/tickets/{TGT id} 与/serviceValidate ,生成ST时直接验证其合法性。
- CAS票据之ST与TGT过期策略详细说明
- CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU
- CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU
- 单点登录cas常见问题(十四) - ST和TGT的过期策略是什么?
- cas login-webflow.xml分析。关于TGT何时生成和存储。
- 使用CAS登录模块连接数据库验证用户合法性
- 解决CAS客户端验证ST票据时发生的TicketValidationException问题
- CA 和 Self-signed Certificate 客户端 如何验证其合法性?
- roller 与 cas 的整合
- jhipster与cas整合简介
- 【js基础】注册时验证输入合法性
- Liferay 5.1.1 安装与整合CAS
- CAS与LDAP整合的实现
- discuz3x ucenter 与cas 初步整合
- Cas集群中对于tgt使用redis共享的操作
- shiro整合cas多次验证或者重复重定向问题
- spring boot-整合CAS Client实现单点登陆验证
- RxJava源码走读之map
- 【bzoj3990】【SDOI2015】【排序】【dfs】
- POJ 3254 Corn Fields【状压dp】
- vector中的元素删除
- 我发现了CSDN的一个大BUG
- CAS 整合/v1/tickets/{TGT id} 与/serviceValidate ,生成ST时直接验证其合法性。
- echart学习使用记录1
- SOA面试题
- Python-解决pip安装库时UnicodeDecodeError的错误
- pgsql检索数据库中表是否存在的时候,变量值区分大小写
- LNMP环境搭建 Ubuntu篇
- Android中分辨率,DPI,DP与PX对应关系
- Courier Fetch: 3 of 5 shards failed
- 杭电1214 圆桌的问题