‘壹’ websphere单点登录问题
这个我们以前是通过代码实现的,在数据库中保存一个key值,当登录时更新key值。以后每次访问判断key值是否发生变化。变化的化就退出。这样当另一台机器登录后,本机就会发现key值变更,实现了单点。
‘贰’ java实现一台电脑只能登录一个web系统demo
这个好办, 如果你只限制一条电脑登录一个系统,可以用后台 Map类绑定用户名和电脑的mac地址,因为每一台电脑只有唯一的一个mac地址,mac地址可以由浏览器获取,具体可到网上找资料。如果是一个系统只能有一个用户在线,就在登录的时候,绑定sessionID在另一个地方有用户登录的时候,清空第一个session ,也就是迫使前一个登录的用户下线
‘叁’ 关于javaWeb单点登录
你这样入手,给你列出整个简单流程,你自己思考一下:
1)下载,配置 Tomcat。
2)写 JSP 与 Servlet ,调用 MySQL 或其他数据库。
3)在 Tomcat 部署你的应用程序。
4)在浏览器运行你的应用程序。
一个简单的测试系统,主要由两个页面组成就够了:
1)登录页面。
2)登录成功后,显示的主页面。
后台程序,只要写一个就行了:
1)接收登录的用户名密码,去查询数据库。
‘肆’ Web系统之常用单点登录协议
企业中一般会存在多个系统,假设用户进入每个系统前都需要输入账号/密码登录,在系统个数少的情况下,每次输入账号/密码还能接收;如果系统个数较多,用户则无法接收。单点登录则很好地解决了此问题。
单点登录的原理是用户只需进行一次登录,便可访问多个系统。
可用于单点登录的协议较多,下面将会简单说明一下常见的四种单点登录协议CAS、OAuth2、OpenID、SAML。
CAS协议是一种基于token协议。它用于Web应用的单点登录或登出,协议内容就是规范出一组用于登录/登出的URIs。协议详见: https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol.html
协议涉及到的重要概念如下:
用CAS实现的单点登录流程如下:
理解OAuth2本身,见 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
这里重点提出的是使用Oauth2的单点登录流程:
OpenID最新版本是OpenID Connect,它为OpenID的第三代技术。OpenID Connect允许所有类型的客户端,包括基于浏览器和本机移动应用程序。
OpenID用于终端用户的身份认证,OAuth2用于在已知用户身份合法情况下对客户端的资源授权。OpenID Conect = OpenID + OAuth2。
OpenID Connect基于OAuth协议之上,在OAuth2中有一个特殊的Scope "openid"来标识openid请求,并在OAuth2的返回体中增加一个idtoken的字段来标识用户。
使用OpenID Connect的单点登录流程与Oauth2一致。
目前国内很多应用(浏览器或手机)都支持微信,微博等第三方认证,比如。这种第三方认证可以用OpenID Connect来实现。
注意一般商业应用才会支持使用第三方认证
SAML通过XML进行交互,且基于HTTP之上。
SAML协议中涉及的基本术语下面进行简要介绍。
IdP: Identity Provider, 身份提供商,是指提供身份管理的服务。常见的企业自有IdP有AD FS,Shibboleth等,Cloud IdP有Azure AD,Okta,OneLogin等。
SP: Service Provider,服务提供商,是指利用IdP的身份管理功能,为用户提供具体服务的应用。SP会消费IdP提供的用户信息。在一些非SAML协议的身份系统(比如OIDC)里,也把Service Provider称作Relying Party,也就是IdP的依赖方。
SAML: Security Assertion Markup Language,是一个实现企业级用户身份认证的标准协议。是SP和IdP之间实现沟通的技术实现方式之一。是目前企业身份联盟的的事实标准(SAML 2.0)。
SAML Assertion: 简称Assertion,SAML断言,是SAML协议中用来描述认证请求(Request)和认证响应(Response)的核心元素。例如用户的具体属性就包含在认证响应的断言里面。
Trust: 信赖,是指建立在SP和IdP之间的互信机制,通常由公私钥来实现。SP通过可信的方式获取IdP的的身份联盟元数据,元数据中包括了IdP用来给SAML Assertion签名的私钥的对应公钥,SP则可以使用公钥来验证Assertion的完整性(Integrity)。
参考阿里云单点登录案例: https://m.aliyun.com/doc/document_detail/69969.html
一个参考链接: https://www.jianshu.com/p/5d535eee0a9b
具体选用哪种单点登录方式,需要权衡利弊。
‘伍’ 怎么实现简单单点登录
所谓单点登录(Single Sign On就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。其实对于程序员在技术上要实现就得就是多个不同域名间共享cookie的问题。
最近在为ERP添加一个部署在另一台机器上,链接到原有老系统中的子项目,调用原有老项目中的Login实现单点登录,尝试了N次屡试不成,最后确定问题,是,.net2.0与4.0中对cookie的加密/解密方法由此差异,于是经过研究,重写实现了一个可以在不同.net版本中实现单点登录的简单方法。
代码:
protected void btnLogin_Click(object sender, EventArgs e)
{
//认证开票,跳转到原始请求页面
System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}
配置文件:
<!--访问权限控制-->
<authorization>
<deny users="?"/>
</authorization>
<!--身份认证方式-->
<authentication mode="Forms">
<forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="Login.aspx" timeout="2880" path="/" domain=".local.com"/>
</authentication>
<!--验证算法-->
<machineKey validationKey="" decryptionKey="F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/>
‘陆’ 如何解决Web系统单用户登录问题,不是单点登录
随着用户不断扩大的需求,更多的系统被建造起来。为了获得更好的用户体验,需要实现用户单点登录。所谓单点登录,就是用户在一个系统上登录后,其他系统就不需要重复登录。单点的登录的好处很明显,提高了用户体验度。如何实现单点登录,在这里我提供两种解决方案: 1和b A B两个站点, 只要在A,B任何一个站点登录后,两个网站就都可以使用,不需要在另一个站点登录了。而通过基于cookie的实现方式,前提是两个系统共享一级域名,并且用户要可以唯一标示。上面这两个站点的一级域名是the;具体处理过程如下:当用户在其中某一个站点登录,就设置一个cookie信息,该cookie包含标识用户ID,为了安全,还需要利用对该cookie的值加密。当用户访问其他网站的时候,首先判断是否存在cookie,如果有的话,便解密该cookie,获取用户信息,设置用户为登录状态。 下面是PHP示例代码 function login() //正常的登录 { '); } funtion sign() { $sign = $_COOKIE['sign']; if(!empty($sign)) { $sign = decrypt($sign); ..........///登录成功 } } 这里需要注意的是:加解密一定需要做安全验证。但是这个方法也不够完美,两个站点必须有相同一级域名;另外这种完全基于cookie的方式,安全性不够高。 2.采用专门登录系统。 所有的站点共享一个登录系统;当用户在其中的一个站点登录成功时, 该系统调用其他站点的登录接口,完成用户在其他站点的登录,同时设置相应的登录信息;或者在用户登录时,只在该系统保存用户登录信息,当用户在其他站点登录时,必须请求该系统接口,获取用户是否登录的信息。前一种方式的缺点是:不管用户有没有使用其他站点,那些站点都需要保存用户状态;后一种方式就把所有的压力都转移到登录系统上面来。而如果要实现用户退出的统一操作,就需要站点调用登录系统的退出接口,然后登录系统接口调用其他站点的退出接口;或者设置一个标记,如果这个标记不存在则标示用户退出,此时只要把该标示清空即可,其他站点发现该标示不存在就知道用户已经退出系统。 这种处理方式需要在登录系统和个站点之间规定登录接口,和注销接口。通过这些接口,个站点可以很方便的处理用户登录或退出: function login() { $info = callLoginServer(); //访问登录服务器 if(!empty($info)) //登录成功了 } //用户没有登录,则在本系统中登录并调用登录服务器接口 function loging() //本系统登录 { .....//登录成功 callSeverLogin();//通知用户登录 } 上面只是简单的逻辑结构,对于正式的系统需要做具体的处理。 如果大家还有更好的方法,欢迎一起讨论!
‘柒’ java web实现简单的用户登录需要哪些技术
简单的话,就是jsp页面有个用户信息表单,点击提交就跑到后台servlet
然后后台就校验用户身份信息,信息可以从数据库拿,用jdbc连接数据库最简单了
完了之后就用response响应请求,或者是发request请求新的登录成功页面jsp
‘捌’ JavaWeb基于AD域的单点登录怎么做
1,AD域的用户和系统的用户名称一样
2,AD验证正确,连接我们的数据库,取出密码(MD5加密过的),将用户名和密码交给我们的系统验证,这时由于我们系统采用了md5加密,这时直接去掉再次加密,因为已经加密过了。
这样只要通过AD域验证,就直接去取md5加密的密码,然后那正确的用户和密码去验证保证了能登陆我们的系统。