其它平台对接文档

简介

本站对ASP.NET和JAVA网站的对接方法进行了说明,对于其它方式实现的网站,有各种SDK版本提供。

官方SDK

非官方SDK

若要查看目前已知的全部的版本的非官方SDK,请点击这里

实现您自己的对接方案

构建您自己的对接方案主要的方法是从验证的流程入手,模拟SDK的跳转流程,完成由SDK完成的工作。在实现过程中需要注意的几项内容:

  • 实现会话保持机制。通过SSO的认证流程可以总结,Cas的认证方式是,”一个Cookie,多个Session“,您的网站需要一个在通过SSO认证成功后,可以记住当前登录状态的信息,如Java中标记Session来记住当前会话。当然,您也可以每次请求都通过SSO认证,但是我们不建议这样做。另外建议session时效可以设置较短。
  • 实现认证凭据机制。
  • 实现用户信息识别机制。
  • 实现单点登出机制。单点登出基于会话保持,通过清除当前保持会话,再到SSO进行注销动作,可以完成单点登出。
  • 统一的配置。建议使用统一的配置文件管理各项属性的值,不要在程序中直接写入,以便统一管理。

下面根据流程来说明实现方式,不指定具体平台,所以也不会说明会话保持的方式。

无法识别当前用户

当当前用户无法识别时,且没有凭据信息时(凭据信息在下面会有说明),需要跳转到SSO进行验证,跳转方式:

https://sso-cas.gridsumdissector.com/login?service=TargetUrl

这里的TargetUrl是指,SSO在认证成功后会跳转的Url,所以建议使用用户访问的目标网址做为参数,这样在跳转成功后会回到原Url,不会影响用户使用。另外,由于Url作为参数传递,所以建议进行编码,尽管不编码也可以跳转。

Url中有凭据信息

当Url中有参数ticket时,如http://xd.gridsumdissector.com/?ticket=ST-123456,说明从SSO中认证成功并跳转(用户自己输入参数不考虑),此时拿到Service Ticket参数值,进行下一个流程。

验证Service Ticket

当拿到Service Ticket后,需要立即进行验证,因为Service Ticket是有效次数为1,有效时长为60秒的凭据。

https://sso-internal.gridsumdissector.com/serviceValidate?service=TargetUrl&ticket=ST-123456

通过Get方式调用以上接口验证(这里使用SSO的内网地址,需要连VPN,以便在无法连外网的服务器使用),当返回状态码为200时,验证成功。

解析用户

当验证Service Ticket成功时,会将用户信息返回,格式如下:

<?xml version="1.0"?>
<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
    <cas:authenticationSuccess>
        <cas:user>xd's login email</cas:user>
        <cas:attributes>
            <cas:guid>xd's guid value</cas:guid>
            <cas:display>xd's display name</cas:display>
            <cas:key>xd's key</cas:key>
            <cas:username>xd's login email</cas:username>
        </cas:attributes>
    </cas:authenticationSuccess>
</cas:serviceResponse>

此时解析以上数据,并在会话保存机制中标识用户,即登录成功。

完成单点登出

单点登出的实现,首先清除当前保持的会话,然后重定向到以下地址:

https://sso-cas.gridsumdissector.com/logout?service=TargetUrl

即可以完成单点登出。