您当前的位置: 首页 > 

一一哥Sun

暂无认证

  • 2浏览

    0关注

    622博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

“CAS的服务记录是空的,没有定义服务”的异常解决

一一哥Sun 发布时间:2021-04-23 10:36:16 ,浏览量:2

一. 异常现象

我在利用cas-overlay-template搭建单点登录服务器的时候,服务器正常启动起来,然后我又搭建了一个cas客户端,配置好了与服务器的连接,结果在访问客户端的时候,浏览器出现如下提示信息:

"未认证授权的服务

CAS的服务记录是空的,没有定义服务。 希望通过CAS进行认证的应用程序必须在服务记录中明确定义。"

 

二. 异常原因

根据提示信息,说是在cas服务端中没有定义服务,其实就是需要我们在服务端记录每个客户端信息,这样才能通过认证。于是我打开cas

服务端的控制台,仔细看了一下,发现控制台提示:

“Loaded[0] services(s) from [InmemoryServiceRegistry...]”,看来真的是没有记录任何认证的服务信息。详细如下图所示:

 

我的cas服务端代码中,其实已经配置好了服务的json信息,代码如下:
{
   "@class":"org.apereo.cas.services.RegexRegisteredService",
   "serviceId":"^(http|https|imaps)://.*",
   "name":"casclient",
   "id":10000,
   "description": "cas client based on spring security",
   "evaluationOrder":1
 }

application.properties中的内容如下:

 spring.aop.auto=true
 spring.aop.proxy-target-class=true
 ​
 ## 认证的用户名和密码
 # CAS Authentication Credentials
 # 默认的用户名,caseuser;默认的密码:Mellon
 cas.authn.accept.users=casuser::Mellon
 ​
 #加载json资源
 cas.serviceRegistry.json.location=classpath:/services

这说明其实在cas服务端和客户端之间,已经建立了关联关系,但是从“Loaded[0] services(s) from [InmemoryServiceRegistry...]”的提示信息来看,说明cas服务端中,没有读取到客户端的信息。

三. 解决办法

其实解决办法也很简单,只需要在application.properties中添加如下2行代码:

#是否开启json识别功能,默认为false
cas.serviceRegistry.initFromJson=true
#忽略https安全协议,使用 HTTP 协议
cas.tgc.secure=false

然后再重新启动cas服务端项目,观察控制台,提示如下:

可以看到,已经成功加载识别了一个service,这样就好了。

关注
打赏
1665624836
查看更多评论
立即登录/注册

微信扫码登录

0.0771s