单点登录系统SSO

2026/4/23 10:41:10

Java培训专家—传智播客http://java.itcast.cn

其实,上面的MD5验证,完全可以使用同一个。

上面的程序非常简单,完全可以通过查看源代码和继承结构图来了解认证和登录方式。且不需要书写任何Java代码。

3、增加一个自己的类,接收用户名和密码,且必须要倒序的用户名与密码相同时才可以登录

只是简单的做一个示例,没有具体用途:

package cn.itcast.pubs;

import org.jasig.cas.authentication.handler.AuthenticationException; import org.jasig.cas.authentication.handler.AuthenticationHandler; import org.jasig.cas.authentication.principal.Credentials;

import org.jasig.cas.authentication.principal.UsernamePasswordCredentials; import org.slf4j.Logger;

import org.slf4j.LoggerFactory; /**

* 实现自己的登录验证器 * @author 王健

* @version 1.0 2012-2-18 */

public class MyAuthenticationHandler implements AuthenticationHandler{

Logger log = LoggerFactory.getLogger(MyAuthenticationHandler.class);

Java培训专家—传智播客http://java.itcast.cn Java培训专家—传智播客http://java.itcast.cn }

/** * 只有supports方法返回真的情况下,才会进入此方法进行验证。 */

public boolean authenticate(Credentials credentials) } /**

* 必须要继承supports方法,即是否支持这种凭据 */

public boolean supports(Credentials credentials) { }

boolean boo = credentials.getClass() //验证是否是相同的类 ==UsernamePasswordCredentials.class; boo = boo || //验证是否是某种类的的子类 UsernamePasswordCredentials.class.

isAssignableFrom(credentials.getClass());

log.info(\是否是用户名密码的认证器:\+boo); return boo;

throws AuthenticationException {

UsernamePasswordCredentials cre = //将凭据强转成用户名和密码的凭据 (UsernamePasswordCredentials) credentials; String name = cre.getUsername(); String pwd = cre.getPassword();

//获取用户名 //获取密码

name = new StringBuffer(name).reverse().toString();//反转一个字符串 if(name.equals(pwd)){ }

return false;

log.info(\验证通过:\+name+\+pwd); return true;

将上面的类,也一样配置到…的元素中:

Java培训专家—传智播客http://java.itcast.cn Java培训专家—传智播客http://java.itcast.cn 即可以实现以下用户名密码的登录:用户名:abc,密码: cba。

8、返回用户的更多信息

1、如返回用户名和用户ID

配置返回用户的ID而不是用户名,用户凭据:Credentials和用户对象(被代理人) :Principal。

Credentials :用于定义用户以什么样的凭据登录,普通的凭据为用户名和密码凭据。

Principal :用户登录成功以后,使用Credentials转换成Principal。Principal中包含了用户的用户名(默认)及一些其他属性信息。

Credentials及Pincipal关系的图示,及Principal内部结构图示:

Principal的源代码如下:(注意此Principal不是java.security.Principal类。而是由cas自己定义的一个接口)

package org.jasig.cas.authentication.principal;

Java培训专家—传智播客http://java.itcast.cn Credentials 用户凭据 通过resolvePrincipal方法转换成 Principal (用户对象,被代理人) String getId() – 返回用户的唯一标识 Map getAttributes() 用户的其他有用信息 Java培训专家—传智播客http://java.itcast.cn import java.io.Serializable; import java.util.Map;

public interface Principal extends Serializable { String getId();

Map getAttributes(); }

为了可以返回用户的ID,我们可以修改deployerConfigContext.xml文件中的…中的元素中的Bean。 此时,为了可以返回用户的ID,我们必须要手工创建一个CredentialsToPrincipalResolver的子类。

具体代码如下:

package cn.itcast.pubs; import javax.sql.DataSource;

import org.jasig.cas.authentication.principal.Credentials;

import org.jasig.cas.authentication.principal.CredentialsToPrincipalResolver; import org.jasig.cas.authentication.principal.Principal; import org.jasig.cas.authentication.principal.SimplePrincipal;

import org.jasig.cas.authentication.principal.UsernamePasswordCredentials; import org.springframework.jdbc.core.JdbcTemplate;

public class MyCredentialsToPrincipalResolver implements CredentialsToPrincipalResolver {

private DataSource dataSource;//查询数据库用 @Override

public Principal resolvePrincipal(Credentials credentials) {

UsernamePasswordCredentials up = //强制类型转换 (UsernamePasswordCredentials) credentials; String name = up.getUsername(); String pwd = up.getPassword();

String sql = \; //查询id - 一般只根据用户查询即可 String id = null; try{

Java培训专家—传智播客http://java.itcast.cn


单点登录系统SSO.doc 将本文的Word文档下载到电脑
搜索更多关于: 单点登录系统SSO 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219