CAS:服务 Ticket/CAS-Server 回复为空
CAS: Service Ticket/CAS-Server reply is empty
我使用 RESTful API,当我使用 TGT 在 https://www.mysite.de/cas/v1/tickets/" + tgt
请求 ST 时,我的 CAS 服务器抛出此消息:
2016-10-12 18:07:39,168 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - <No flow mapping found for request with URI '/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org'>
2016-10-12 18:07:39,168 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - <No flow mapping found for request with URI '/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org'>
2016-10-12 18:07:39,168 WARN [org.springframework.web.servlet.PageNotFound] - <No mapping found for HTTP request with URI [/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org] in DispatcherServlet with name 'cas'>
当我在控制台中打印出我的回复时,我得到:
Service Ticket: 0♠
0♠
是我通过这样做得到的响应:
QByteArray replyData = reply->readAll();
QString serviceTicket = QString::fromAscii(replyData.data());
fprintf(stderr, "Service Ticket: %s\n", QString::fromAscii(replyData.data()));
我想我在这里有一个误会。我只是假设回复是 QString
或者至少会以正确的方式转换。是否有可能回复的格式无法像那样转换?如果是,我需要做什么?
如果这不是原因并且回复只是空回复或其他内容,上述 DEBUG
信息可能表明我的问题所在。
我可能必须对 web.xml
进行任何其他更改才能让 REST 在这里工作吗?我所做的一切都来自 this source。
编辑: 似乎是 CAS 4.2.6 的错误。我降级到 4.2.5,现在当我通过 RESTful APi
发送加密的 TGT 时,我在 CAS 服务器上收到 NullPointerException
原来这是CAS 4.2.6的bug。转到 war 中的 WEB-INF\lib\cas-server-webapp-support-4.2.6.jar\META-INF\spring\web-ctx-config.xml
并更改此设置:
<bean id="urlPathHelperWeb" class="org.springframework.web.util.UrlPathHelper"
p:alwaysUseFullPath="true" />
对此:
<bean id="urlPathHelperWeb" class="org.springframework.web.util.UrlPathHelper"
p:alwaysUseFullPath="false" />
我使用 RESTful API,当我使用 TGT 在 https://www.mysite.de/cas/v1/tickets/" + tgt
请求 ST 时,我的 CAS 服务器抛出此消息:
2016-10-12 18:07:39,168 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - <No flow mapping found for request with URI '/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org'>
2016-10-12 18:07:39,168 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - <No flow mapping found for request with URI '/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org'>
2016-10-12 18:07:39,168 WARN [org.springframework.web.servlet.PageNotFound] - <No mapping found for HTTP request with URI [/cas/v1/tickets/TGT-**********************************************6rXJ4WKxmo-cas01.example.org] in DispatcherServlet with name 'cas'>
当我在控制台中打印出我的回复时,我得到:
Service Ticket: 0♠
0♠
是我通过这样做得到的响应:
QByteArray replyData = reply->readAll();
QString serviceTicket = QString::fromAscii(replyData.data());
fprintf(stderr, "Service Ticket: %s\n", QString::fromAscii(replyData.data()));
我想我在这里有一个误会。我只是假设回复是 QString
或者至少会以正确的方式转换。是否有可能回复的格式无法像那样转换?如果是,我需要做什么?
如果这不是原因并且回复只是空回复或其他内容,上述 DEBUG
信息可能表明我的问题所在。
我可能必须对 web.xml
进行任何其他更改才能让 REST 在这里工作吗?我所做的一切都来自 this source。
编辑: 似乎是 CAS 4.2.6 的错误。我降级到 4.2.5,现在当我通过 RESTful APi
发送加密的 TGT 时,我在 CAS 服务器上收到 NullPointerException原来这是CAS 4.2.6的bug。转到 war 中的 WEB-INF\lib\cas-server-webapp-support-4.2.6.jar\META-INF\spring\web-ctx-config.xml
并更改此设置:
<bean id="urlPathHelperWeb" class="org.springframework.web.util.UrlPathHelper"
p:alwaysUseFullPath="true" />
对此:
<bean id="urlPathHelperWeb" class="org.springframework.web.util.UrlPathHelper"
p:alwaysUseFullPath="false" />