手工实现SSO

    前一阵子公司要求做一个SSO(Single Sign On),把现有的子网站的用户全部整合起来。于是乎在互联网上搜到了CAS这个经典的SSO项目,便拿来研究,部署。但是由于他用到了证书,而使用自己颁发的证书时浏览器都要进行阻拦,而要取得合法证书又是颇费周章。于是决定自己实现一个超简单的SSO,这个SSO暂没有考虑安全机制。

    下面描述以下这个SSO的实现原理,以便以后温习,呵呵......

     1.本SSO的实现主要是使用了COOKIES,因为COOKIES可以保存一个域上的所有站点信息(跨域COOKIES的实现没有研究)。

     2.新建一个SSO项目,然后部署。对于要统一登录的子站点,分别添加一个过滤器,在过滤器只使用了common-httpclient包的方法来远程调用另外服务器上指定的方法。从而实现了单点登录。

     其实思路很简单,实现起来也很简单。主要是服务器端解析客户端发来的请求,是登录·注册·登出,还是其它类型的操作从而执行相应的方法。然后跳转回子站点应该跳转的URL上。

     本方法参考了互联网上某位师兄的文章,网址暂时记不起来了,请见谅!

 

     服务器端主要代码如下:

 

       /**
         *定义两个容器来保存登录用户的ID及COOKIESID
         **/              
        private static java.util.concurrent.ConcurrentMap<String, String> accounts;

	private static java.util.concurrent.ConcurrentMap<String, String> SSOIDs;

           /**
            *下面是服务器主要的是服务方法的分支。
            **/
                java.io.PrintWriter out = response.getWriter();
		java.lang.String action = request.getParameter("action");
		java.lang.String result = "failed";
		if (action == null)
		{
			/**
                          *验证用户名密码,成功后写COOKIES然后返回指定的URL
                          **/
		} else if (action.equals("authcookie"))
		{
			java.lang.String myCookie = request.getParameter("cookiename");
			if (myCookie != null)
			{
				result =" 验证COOKIES,并返回保存的用户名";
			}
			out.print(result);
			out.close();
		} else if (action.equals("authuser"))
		{
			result = authNameAndPasswd(request, response);
			out.print(result);
			out.close();
		} else if (action.equals("logout"))
		{
			java.lang.String myCookie = request.getParameter("cookiename");
			logout(request, response, myCookie);//清除COOKIES
			out.close();
		}

     客户端过滤器的主要代码如下:

               /**
                 *根据在WEB.XML文件中配置的过滤器参数来组建请求URL来读取服务器端返回的COOKIES中的用户名
                 **/
                org.apache.commons.httpclient.HttpClient httpclient = null;
		org.apache.commons.httpclient.methods.GetMethod httpget = null;
		java.lang.String authAction = "?action=authcookie&cookiename=";
		httpclient = new HttpClient();
		httpget = new GetMethod((new StringBuilder()).append(SSOServiceURL)
				.append(authAction).append(cookievalue).toString());
		try
		{

			java.lang.String s;
			httpclient.executeMethod(httpget);
			java.lang.String result = httpget.getResponseBodyAsString();
			s = result;
			httpget.releaseConnection();
			return s;
		} catch (Exception e)
		{
			httpget.releaseConnection();
			return "failed";
		}

   客户端WEB.XML文件配置如下:

 

<filter>
     <filter-name>SSOFilter</filter-name>
     <filter-class>xxx.xxx.filter.SSOFilter</filter-class>
        <init-param>
            <param-name>cookieName</param-name>
            <param-value>cookies_name</param-value>
        </init-param>
        <init-param>
            <param-name>SSOServiceURL</param-name>
            <param-value>http://xxx.com/SSO.do</param-value>
        </init-param>
        <init-param>
            <param-name>SSOLoginPage</param-name>
            <param-value>http://xxx.com/login.jsp</param-value>
        </init-param>
  </filter>
  <filter-mapping> 
			<filter-name>SSOFilter</filter-name> 
			<url-pattern>/UserLogin.lo</url-pattern> 
	</filter-mapping>
 
单向双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)内容概要:本文介绍了在单向和双向V2G(Vehicle-to-Grid)环境下,分布式电源与电动汽车充电站的联合配置方法,并提供了基于Matlab的代码实现。研究涵盖电力系统优化、可再生能源接入、电动汽车充放电调度、储能配置及微电网经济调度等多个关键技术领域,重点探讨了在不同电价机制和需求响应策略下,如何通过智能优化算法实现充电站与分布式电源的协同规划与运行优化。文中还展示了多种应用场景,如有序充电调度、鲁棒优化模型、多目标优化算法(如NSGA-II、粒子群算法)在电力系统中的实际应用,体现了较强的工程实践价值和技术综合性。; 适合人群:具备电力系统、新能源、智能优化算法等相关背景的科研人员、研究生及从事能源系统规划与优化的工程技术人员;熟悉Matlab/Simulink仿真工具者更佳。; 使用场景及目标:①用于科研项目中关于电动汽车与分布式电源协同配置的模型构建与仿真验证;②支持毕业论文、期刊投稿中的案例分析与算法对比;③指导实际电力系统中充电站布局与能源调度的优化设计。; 阅读建议:建议结合文中提供的Matlab代码与具体案例进行同步实践,重点关注优化模型的数学建模过程与算法实现细节,同时可参考文末网盘资源获取完整代码与数据集以提升学习效率。
【电动车】【超级棒】基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)内容概要:本文围绕基于蒙特卡洛模拟法的电动汽车充电负荷研究展开,利用Matlab代码实现对不同类型电动汽车(如常规充电、快速充电、换电模式)在不同场景下的充电负荷进行建模与仿真。通过蒙特卡洛方法模拟大量电动汽车的充电行为,结合用户出行规律、充电时间、电量需求等随机因素,分析电动汽车规模化接入电网后对电力系统负荷的影响,并探讨分时电价策略对充电负荷的引导作用,进而优化电网运行。研究涵盖充电负荷的空间分布特性、时间分布特征及对电网峰谷差的影响,旨在为电力系统规划和电动汽车有序充电管理提供理论支持和技术工具。; 适合人群:具备一定电力系统、交通工程或新能源汽车背景的研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。; 使用场景及目标:①用于研究大规模电动汽车接入对配电网负荷曲线的影响;②支撑分时电价、需求响应等政策制定与优化;③为充电站规划、电网调度、储能配置等提供数据支持和仿真平台;④适用于学术研究、课题复现及工程项目前期分析。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注蒙特卡洛模拟的参数设置、充电行为的概率建模过程,并尝试调整输入变量以观察负荷变化趋势,加深对电动汽车充电负荷不确定性和聚合效应的理解。
### VCSA 单点登录 (SSO) 配置教程 #### 准备工作 在配置 VMware vCenter Server Appliance (VCSA) 的单点登录 (SSO) 功能之前,需确认已成功完成 VCSA 安装并能够正常访问其管理界面。如果 DNS 解析存在问题,则需要手动编辑 `/etc/hosts` 文件来确保 PSC(Platform Services Controller)主机名可被正确解析[^1]。 --- #### SSO 配置流程 ##### 1. 登录到 VCSA Web 界面 通过浏览器访问 `https://<vcsa-ip-address>` 并输入管理员账户的用户名和密码以进入 VCSA 控制面板。默认情况下,初始管理员账号为 `administrator@vsphere.local`[^2]。 ##### 2. 访问 Single Sign-On 设置页面 导航至 **Administration** -> **Single Sign-On** 页面。此部分允许对身份验证源和服务进行高级配置。 ##### 3. 创建新域或调整现有域 - 如果尚未创建自定义 SAML 或 LDAP 域,可以选择在此处新增一个。 - 对于已有域,可以通过点击对应条目右侧的操作按钮修改属性,例如更改密码策略、启用多因素认证等[^3]。 ##### 4. 添加外部身份提供者 (IdP) 为了实现与其他系统的集成,可能需要引入第三方 IdP 如 Microsoft Active Directory Federation Services (ADFS),具体操作如下: - 进入 **Identity Sources** 子菜单; - 使用向导模式导入元数据 XML 文件或者手工指定端点 URL 和证书信息; - 测试连接以验证互信关系建立无误后再保存设置。 ##### 5. 处理常见错误提示 当遇到类似于 `"Failed to validate sso." ([Error 10003] Invalid Credentials)` 错误消息时,请检查以下几点: - 是否已经按照官方文档指示完成了必要的网络参数初始化? - 当前使用的客户端时间戳是否同步偏差过大?建议校准服务器与时钟服务保持一致。 - 双重确认所提供的凭据组合确实有效且未过期失效。 ##### 6. 启用 SSH 维护功能 尽管图形化工具提供了大部分所需选项开关,但在某些特殊场景下仍推荐开启远程 Shell 支持以便快速排查疑难杂症。执行命令如 `vim-cmd hostsvc/net/dns_cache_flush` 来刷新本地缓存记录有助于解决潜在冲突问题。 --- #### 注意事项 在整个过程中务必小心谨慎对待敏感资料保护措施以免泄露风险增加;另外考虑到兼容性和稳定性方面的原因,强烈建议遵循最新版本的产品指南逐步推进各项改动尝试。 ```bash # 示例:更新 /etc/hosts 文件内容 echo "<psc-ip> <psc-hostname>" >> /etc/hosts ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值