单点登录加密
❶ 单点登录SSO和密码代填有什么区别
首先需要明确的是:密码代填不是单点登录。
例如 公司A 目前想实现单点登录,但是应用没有标准接口,也没有相应的开发人员,只能通过密码代填的方式来实现。需要注意的是,密码代填可能需要知道用户的账户密码进行传输。所以还是建议公司里应该试用基于协议的单点登录。
目前市面上玉符科技专注于做单点登录,对于有些公司不得不通过密码代填的形式来实现单点登录的话,玉符可以确定的是他们所有传输都是通过https发生的,并且专门开发了非常安全的密钥管理机制KMS,经过多层加密,确保密码不会被窃取。
以上。希望采纳
❷ qq 单点登录是怎么实现的会不会造成密码泄露
年初的时候领导让研究过sso单点登录...
记得当时是主要通过cookie来实现的,访问页面时先检查cookie是否有登录信息(登录是否成功,用户标识),如果登录成功就直接跳转到模块对应的主页,如果cookie里没有登录信息或登录失败就让用户重新登录.
整个过程中密码只在第一次访问站点时用了一次(检查是用户名密码是否匹配)..后续访问其他模块时只需要检查cookie的登录是否成功即可, 所以不会造成密码泄露....
腾讯好像也是这么做的, 记得登录他旗下某个站点后就有更新cookie, 好象是存了一个md5值
❸ CAS单点登录用MD5加密就登录不了了
参考答案: 做人要谦卑,因为谦卑不醉。
❹ 问下单点登录如何实现加密
如果单点是指统一一个后台管理还是可以实现的,这样操作无论安装多少终端都可以在后台管理加密文件,了解文件的状态权限的设置等等管理。
❺ 单点登录是采用了什么安全保障机制
根据实现方式的不同,单点登录采用的安全机制也不相同,但主要是对系统间传输的数据信息进行加密,该机制依赖于所采用加密算法的安全性。页面重定向方式采用的token验证的机制一定程度上克服了这一问题,但牺牲了一定的便捷性。
❻ 到底这个单点登录系统能有什么好处呢,为什么一点要实现单点登录
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。
1)提高用户的效率。
用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。
2)提高开发人员的效率。
SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
3)简化管理。
如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。
实现方式我了解到的大概分三种:
以Cookie作为凭证媒介
最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。
用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。通过JSONP实现
对于跨域问题,可以使用JSONP实现。
用户在父应用中登录后,跟Session匹配的Cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的Cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。通过页面重定向的方式
最后一种介绍的方式,是通过父应用和子应用来回重定向中进行通信,实现信息的安全传递。
父应用提供一个GET方式的登录接口,用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个的登录页面,用户输入账号密码进行登录。如果用户已经登录了,则生成加密的Token,并且重定向到子应用提供的验证Token的接口,通过解密和校验之后,子应用登录当前用户。
❼ 门户中如何实现单点登录和统一身份认证
本案涉及三个概念及功能模块,即门户、单点登录和统一身份认证。
单点登录(Single Sign-On,缩写为SSO),它是目前业务整合时使用较多的一种解决方案,通过SSO,用户只需要在某个应用系统入口登录一次,就可以访问所有与该应用系统相互信任的其它应用系统。
目前成熟的SSO实现框架有很多,开源的有JOSSO、CAS等很多,你可以选择其中之一与门户集成即可,集成方法的问题可在选型后在网络中查找,可选方案请参考《Liferay 集成 CAS 实现单点登录与应用系统集成》 http://www.ibm.com/developerworks/cn/opensource/os-cn-liferay-cas/index.html
所谓身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。复杂一些的身份认证方式采用一些较复杂的加密算法与协议,需要用户出示更多的信息(如私钥)来证明自己的身份,如Kerberos身份认证系统。
目前基于SOA架构,可跨平台与多种类型的应用系统对接的统一身份认证平台也有很多,
身份存储方式有:通用关系型数据库、LDAP目录、Microsoft Active Directory(AD)等形式,可选方案可参考《Web Service Case Study: 统一身份认证服务》
https://www.ibm.com/developerworks/cn/webservices/ws-casestudy/part4/
或《Liferay与CAS及LDAP》http://www.huqiwen.com/2013/12/18/liferay-cas-ldap/
❽ 单点登录集成三方系统存储的密码密文怎么办
这个问题要详细讲就很长很复杂了,简要说一下。
首先,你所说的“第三方登陆”概念很模糊,有很多方法可以实现。不过现在主流的方法是使用OAUTH授权,这里就简单讲一下。
流程:
A网站向第三方网站B申请使用相关登陆服务,B对A进行审核,通过后,B会提供给A相关的调用接口(api)和一些凭证,例如token、id、secret id等等。在用户登录时,A会向B提供的接口发送上面提到的凭证并将用户引导到B的某一页面进行输入密码等登陆操作,B在验证A和用户的合法性后,会将部分用户信息(例如昵称、邮箱等等,但不包括密码)发送给A,某些网站B还会授权A对用户的账户进行有限的操作(例如使用用户账户发布信息(qq、微薄等)、读取用户的联系人(gmail等),该授权可由用户手动取消),A根据B返回的内容决定对用户采取的后续操作(继续完善注册或者直接显示内容)。
由上可知,至少在采取oAuth授权协议的网站,你的密码不会泄露。事实上,绝大部分第三方登陆服务都不会泄露用户密码。
❾ cas 单点登录是怎么验证密码
通过上述部署与配置,多个Web应用已经可以共用一个登录服务。但是,上述过程中作为CAS Client端的Web应用只取得了用户登录名称信息,而在实际应用中,Web应用往往需要获得登录用户更多的信息,例如会员等级、性别、住址等。要达到此目的,只需对Server端稍做修改即可实现。
1. 服务端配置及修改
假定上述存储用户信息的数据表userinfo中还包含一个名为address的用于存储用户地址的字段,而Web应用程序希望能够从CAS Server处获得当前登录用户的地址信息,则Server端需要按以下内容修改deployerConfigContext.xml。部分配置说明请参见注释。
<!--将原有attributeRepository配置注释 -->
<!--
<beanid="attributeRepository"
class="org.jasig.services.persondir.support.StubPersonAttributeDao">
<propertyname="backingMap">
<map>
<entrykey="uid" value="uid" />
<entrykey="ePersonAffiliation" value="ePersonAffiliation"/>
<entrykey="groupMembership" value="groupMembership" />
</map>
</property>
</bean>
-->
<!--新增attributeRepository配置(开始) -->
<bean class="org.jasig.services.persondir.support.jdbc."id="attributeRepository">
<!-- 指定使用的数据源,此处dataSource是已配置好的数据源 -->
<constructor-arg index="0"ref="dataSource"/>
<!-- 从数据库中查询信息的SQL语句,通常只需要修改表名即可 -->
<constructor-arg index="1" value="select * fromuserinfo where {0}"/>
<propertyname="queryAttributeMapping">
<map>
<!-- 上述查询的参数,将userName替换为表中表示用户名的字段名称 -->
<entrykey="username" value="userName"/>
</map>
</property>
<propertyname="resultAttributeMapping">
<map>
<!-- 需要返回给Web应用的其它信息,多个信息时可继续增加entry节点-->
<!--key值为数据表中的字段名称,value值为Client端取值时的名称标识-->
<entry key="address" value="address"/>
</map>
</property>
</bean>
<!--新增attributeRepository配置(结束) -->
<bean
id="serviceRegistryDao"
class="org.jasig.cas.services.">
<propertyname="registeredServices">
<list>
<beanclass="org.jasig.cas.services.RegexRegisteredService">
<propertyname="id" value="0" />
<propertyname="name" value="HTTP and IMAP" />
<propertyname="description" value="Allows HTTP(S) and IMAP(S)protocols" />
<propertyname="serviceId" value="^(https?|imaps?)://.*" />
<propertyname="evaluationOrder" value="10000001" />
<!--增加此项配置 -->
<property name="ignoreAttributes" value="true"/>
</bean>
… …
</list>
</property>
</bean>
CASServer要将额外的信息传递至Client端,还需要修改完成信息组装的文件WEB-INF/view/jsp/protocol/2.0/casServiceValidationSuccess.jsp。casServiceValidationSuccess.jsp负责组装包含用户信息的XML,因此修改部分是将需要传递的额外信息加入到它最终生成的XML文件之中。具体修改如下:
<cas:serviceResponsexmlns:cas=''>
<cas:authenticationSuccess> <cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>
<!-- 新增额外信息(开始) -->
<c:iftest="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)> 0}">
<cas:attributes>
<c:forEachvar="attr"items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">
<!--注意此行的正确写法,网上资料基本都是错误的--> <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</cas:attributes>
</c:if>
<!-- 新增额外信息(结束) -->
<c:if test="${not emptypgtIou}">
<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
</c:if>
<c:if test="${fn:length(assertion.chainedAuthentications)> 1}">
<cas:proxies>
<c:forEachvar="proxy" items="${assertion.chainedAuthentications}"varStatus="loopStatus" begin="0"end="${fn:length(assertion.chainedAuthentications)-2}"step="1">
<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
</c:forEach>
</cas:proxies>
</c:if>
</cas:authenticationSuccess>
</cas:serviceResponse>
2. java Client端取得更多用户信息
Java Client端不需要做任何修改就可以继续正常使用CAS服务,如果需要取得用户更多信息,可以通过AttributePrincipal对象取得Attribute列表(一个Map对象)后进行查询。
修改前述Java Client的示例代码,在最后追加取得address信息的代码,重启服务并重新访问页面,可以看到页面上显示了当前用户的address信息。
<%@pageimport="org.jasig.cas.client.authentication.AttributePrincipal" %>
<%@pageimport="org.jasig.cas.client.validation.Assertion" %>
<%@page import="java.util.*" %>
<%
String loginName1 = request.getRemoteUser();
%>
request.getRemoteUser(): <%=loginName1%><br/>
<%
AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();
String loginName2 = principal.getName();
%>
request.getUserPrincipal().getName():<%=loginName2%><br/>
<%
Object object =request.getSession().getAttribute("_const_cas_assertion_");
Assertion assertion =(Assertion)object;
String loginName3 =assertion.getPrincipal().getName();
%>
request.getSession().getAttribute("_const_cas_assertion_").getPrincipal().getName():<%=loginName3%><br/>
❿ Java单点登录安全性怎么保障
首先,登录服务器与安全服务器是否都可以做安全审计,确保记录每一项操作内容。其次,应用服务器的权限也应该是分角色配置的,不同的角色拥有不同的权限进行不同的操作,上文的URL就是指具体现操作吧。
这个有两种选择,一种是选择专业的SSO产品,涉及比较大的建设和原有系统改造成本,另外可以考虑使用ssl vpn作为单点登录的替代方案,ssl vpn有严格的身份认证、传输加密和细粒度的访问授权控制(可以做到页面级),只要你所购买的ssl vpn支持单点登录功能就能够实现大部分web应用和cs应用通过自动填表功能完成单点登录(如果有统一的域认证或radius认证实现起来更简单)
网关是要和密钥绑定的,并且分在线和旁路两种。如果是旁路,则一次登录,不再认证;如果是在线,则每次发起访问都要重新更新登录信息。按照你说的跳转,应该是旁路方式,传输的安全性不由网关保证,直接盗取文件的URL,由于没有身份,是无法访问的。
旁路网关的作用是避免客户端直接登录应用系统,避免通过提交特殊字符串的BS方式攻击,应用系统是不提供直接URL的登录界面的。这个当然需要应用系统重新改良一下,以满足网关登录的方式。
如果你说的传输安全性是线路盗取信息,那不是网关的事儿,那是信息加密的事儿。
建议应用系统里对每一次登录缓存其登录位置信息等,设置睡眠时间即多长时间不操作就断开并清除该缓存。如果网关支持的话,其实最好是在线网关,每次访问都通过网关服务器,应用系统只处理网关服务器的ip提交的访问,其他访问一概拒绝,则解决你的安全需求。