使用Java REST Client示例来访问CAS REST API

kri*_*ker 9 rest cas jasig

我按照教程在本地CAS服务器上启用REST服务.

但是没有Java示例

"Java REST客户端示例

我们需要一个真实的,有效的例子,前一个是没用的.很多人都通过电子邮件告诉我它不能正常工作,我确认它不起作用."

我能够找到这个,但不幸的是,这对我不起作用.

任何指针/链接?非常感激.

kri*_*ker 17

得到它了!

以下是有关如何启用CAS REST API并能够通过JAVA REST客户端连接到其他人的完整解决方案

  • 获取CAS源代码.
  • 阅读这篇文章
  • 将以下内容添加到pom.xml中,如#2中的文章所示

<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-integration-restlet</artifactId> <version>${cas.version}</version> <type>jar</type> </dependency>

  • 确保将以下内容添加到pom.xml以避免Spring jar冲突.就我而言,cas-server-integration-restlet依赖于spring-web,它默认使用旧版本的Spring.所以,我明确定义了

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.1.1.RELEASE</version> </dependency>

  • 编译你的cas代码.应该在目标文件夹中获取cas.war.
  • 将其上传到您的服务器,更改tomcat的权限并等待它部署
  • 在CATALINA/conf中找到server.xml并取消注释8443端口配置,以便我们的服务器允许SSL连接.另外,请在此处指定您的证书.
  • 现在导航到展开的cas.war文件并深入到WEB-INF文件夹以查找deployerConfigContext.xml文件.指定CAS用于进行身份验证的内容.就我而言,我使用了LDAP.
  • 在上面的每篇文章中添加以下web.xml

<servlet> <servlet-name>restlet</servlet-name> <servlet-class>com.noelios.restlet.ext.spring.RestletFrameworkServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>

<servlet-mapping> <servlet-name>restlet</servlet-name> <url-pattern>/v1/*</url-pattern> </servlet-mapping>

  • 重新启动tomcat以使更改生效.
  • 测试您可以通过标准CAS UI登录: https://server:8443/cas/login
  • 测试REST API是否通过以下方式公开: https://server:8443/cas/v1/tickets
  • 现在让我们连接它.我使用了这个示例代码.确保提供正确的链接和用户名/密码
  • 当我尝试按原样运行代码时,它抱怨"引起:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径".基本上要求您安装证书.如果您可以访问服务器,只需将其复制即可.如果没有,我发现这个代码将为你安装,如果你没有访问权限或只是太懒惰:)
  • 现在,如果您使用有效凭据运行JAVA CAS客户端,您应该会看到类似的内容
201
https://server_name:8443/cas/v1/tickets/TGT-4-rhVWLapYuOYi4InSEcmfNcABzaLMCPJgGIzlKqU1vb50zxb6pp-server_name
Tgt is : TGT-4-rhVWLapYuOYi4InSEcmfNcABzaLMCPJgGIzlKqU1vb50zxb6pp-server_name.ndev.coic.mil
Service url is : service=https%3A%2F%2Fmyserver.com%2FtestApplication
https://server_name:8443/cas/v1/tickets/TGT-4-rhVWLapYuOYi4InSEcmfNcABzaLMCPJgGIzlKqU1vb50zxb6pp-server_name
Response code is:  200
200
ST-4-BZNVm9h6k3DAvSQe5I3C-server_name
Run Code Online (Sandbox Code Playgroud)
  • 您可以看到200个代码和票证.如果您要在服务器上查看cas的日志,则应该会看到有关成功进行身份验证和生成故障单的消息.
  • 将用户名/密码更改为某些虚拟数据并尝试运行代码.您将收到400错误消息,这意味着拒绝访问权限.

成功!


小智 5

对于 CAS 4.0,它更简单一些(在 apache-tomcat-7.0.55 上测试)

在您的 pom.xml 添加以下依赖项

    <dependency>
        <groupId>org.jasig.cas</groupId>
        <artifactId>cas-server-integration-restlet</artifactId>
        <version>4.0.0</version>
        <scope>runtime</scope>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

对 springframework 的直接依赖不是必需的,因为排除可以防止重复的包

在您的 web.xml 中,您需要为 restlet 添加 servlet 映射(mind 包已从 com.noelios.restlet... 更改为 org.restlet...

    <servlet>
        <servlet-name>restlet</servlet-name>
        <servlet-class>org.restlet.ext.spring.RestletFrameworkServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>restlet</servlet-name>
        <url-pattern>/v1/*</url-pattern>
    </servlet-mapping>  
Run Code Online (Sandbox Code Playgroud)

由于上述步骤在您的 WEB-INF/lib 目录中,应添加以下新文件

ls target/cas/WEB-INF/lib/ | grep restlet
cas-server-integration-restlet-4.0.0.jar
org.restlet-2.1.0.jar
org.restlet.ext.servlet-2.1.0.jar
org.restlet.ext.slf4j-2.1.0.jar
org.restlet.ext.spring-2.1.0.jar
Run Code Online (Sandbox Code Playgroud)