java单点登录的实现

java单点登录的实现
在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。

欢迎大家进行补充讨论。

单点登录的具体实现有很多种选择,包括:
1.采用专门的SSO商业软件:主要有:Netgrity的Siteminder,已经被CA收购。

Novell 公
司的iChain。

RSA公司的ClearTrust等。

2.采用门户产品供应商自己的SSO产品,如:BEA的WLES,IBM 的Tivoli Access Manager,
Sun 公司的identity Server,Oracle公司的OID等。

3.这些商业软件一般适用于客户对SSO的需求很高,并且企业内部采用COTS软件如:
Domino,SAP,Sieble的系统比较多的情况下采用。

并结合身份管理。

统一认证等项目采用。

采用这些软件一般都要对要集成的系统做些改造,如在要集成的系统上安装AGENT。

现在一般只提供常见软件如:Domino,SAP,Sieble,常见应用服务器:weblogic,websphere
等的AGENT。

要先统一这些系统的认证。

一般采用LDAP或数据库。

然后才能实现SSO。

比较麻烦。

4.另外,如果不想掏银子,也有OPEN SOURCE的SSO软件可选:主要有:
/ https:/// 等。

具体怎么样
就不清楚了。

如果项目对SSO的要求比较低,又不想对要被集成的系统做任何改动,可采用下面介绍的方式简单实现:下面我们通过一个例子来说明。

假如一个门户项目要对下面的几个系统做SSO。

用户在这些系统中的用户名,密码各不相同,如:员工号为001的员工在这些系统中的用户名,密码分别如下:
用户系统用户名密码
001Portal系统A1234
001邮件系统B2345
001DOMINO系统C AAAA
001报销系统D CCCC
001工资系统E BBBB
首先,建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系
首先,要建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系并保存。

可保存在表中或LDAP中或文件系统中。

当然要考虑这些系统之间的数据同步问题。

比较好的方式是找到用户在这些系统中的都存在的唯一信息(如员工号,MAIL地址,姓名等)。

通过唯一信息实时到各个系统中去取认证所需要的信息。

就不需要考虑数据同步问题。

比较实用。

可以建立类似下面的表:密码可采用加密保存。

如果是采用BEA的Weblogic Portal,可采用UUP来保存这些信息。

(
user
varchar2(20),
app_name varchar2(20),
architect varchar2(4),
app_company varchar2(50),
app_department varchar2(50),
app_user varchar2(15),
app_passwd varchar2(15),
app_cookie varchar2(30),
form_user varchar2(20),
form_passwd varchar2(20),
app_special varchar2(20)
);
通过IFRAME或超连接方式集成目标系统,并进行SSO
通过IFRAME或超连接方式集成目标系统,并在URL中带上用户名和密码。

如集成DOMINO可采用如下方式:
width=" >
或:
Href src=“http:// host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf”
以上采用的是在HTTP中直接传递明码,为提高安全性,可采用HTTPS来传递用户名和密码。

另外采用这种方式被集成的系统必须支持FORM方式认证。

J2EE应用,DOMINO等都支持FORM 认证。

这两种方式如果SSO成功,就自动进入目标系统的界面,如果实现会显示目标系统的登录界面。

其效果图如下:
这种方式,必须维护对应关系表,如上面的sso_info。

更好的方式是提供界面,让最终用户自己维护这种对应关系,可模仿Compoze portlets for lotus的做法,在用户第一次进入要与之做SSO的系统时,如DOMINO系统,显示一个界面,让用户自己输入他在该系统中的用户名/密码等信息。

并保存到表中或LDAP等其他数据源中。

以后用户要进入这些系统时,就直接从表中或其他数据源中取用户的用户名/密码等信息,帮助用户做认证。

建议采用这种方式。

如下图所示。

如果用户改变了自己在DOMINO系统中的用户名,密码。

从门户系统进入DOMINO系统时,认证会失败,就重新显示类似下面的界面。

让用户重新输入他在DOMINO系统中新的用户名,密码并保存。

以上这种实现方式,一般需要浏览器支持COOKIE,所以要注意浏览器的配置,在开发阶段,为方便调试,可设置IE,让它显示COOKIE的名称。

如下所示:
采用这种方式,对要集成的系统不需要做任何的改动。

如果PORTAL系统中的用户在被集成的系统中的权限都一样,可采用建立一个通用用户的做法。

也就是所有在PORTAL系统中的用户都采用这个通用用户进入目标系统。

这种方式等于是采用页面集成方式做集成。

比较方便使用。

另外,有时候需要采用调用API,或配置Adapter等应用集成方式来集成其他系统,一般也是通过定义一个连接专用的用户。

在API中或在配置Adapter的时候写死。

如采用JA V A API方式集成DOMINO:lotus.domino.Session dominoSession = NotesFactory.createSession(dominoServer, “admin”, “password”);
CS结构实现方式
经常有人问CS结构的应用如何实现SSO,本人的建议是对这种系统不要自己去实现SSO。

很麻烦,其实输个用户名,密码没什么大不了的。

如果要实现,一是采用商业软件。

另外也可以采用以下方式:在PORTAL的PORTLET上建立超连接。

并通过APPLET方式启动CS结构的应用系统的登录界面。

然后通过如下的方式把用户名/密码传递过去。

-不能做任何改动的客户端- WIN消息(给登录窗口发送用户名,密码等登录所需要的信息),模拟键盘(java有模拟键盘输入的API)
-可以做改动的客户端- 参数传递,并让登录的EXE文件读取参数进行认证。

因为要让APPLET执行本地的EXE文件,所以必须对IE中的JRE的安全进行设置。

其他:
在采用以上方式实现了SSO后,要注意LOGOUT,可采用与LOGIN相同的方式。

也可以通过被集成系统的超时设置来实现。

单点登录SSO技术资料收集
∙统一用户认证和单点登录解决方案: 计算机世界网上的文章,比较全面的介绍统一用户认证和单点登录解决方案
∙惠普灵动单点登录(SSO)解决方案: 包括C/S结构的系统单点登录解决方案
∙网站用户单点登录系统解决方案: 通过令牌方式实现网站用户单点登录
∙WebLogic平台的Web SSO(SAML)解决方案: 在WebLogic 8.1SP4中,提供了用于和Microsoft Windows客户端进行SSO的Single Pass Negotiate Identity Assertion Provider。

本文对其做了详细的介绍。

∙/index.php?blogId=4: 收录了一些SSO方面的文章
∙应用整合中SSO的技术实现: 作者介绍了南京地税进行应用整合SSO的技术实现方案。

合集下载

Java开发工具IntelliJ IDEA使用教程:定义语法和解析器

Java开发工具IntelliJ IDEA使用教程:定义语法和解析器

1 复制解析器工具类将语法插件需要的GeneratedParserUtilBase类复制到你的源文件中。

2 定义单点登录类型package com.simpleplugin.psi;import com.intellij.psi.tree.IElementType;import com.simpleplugin.SimpleLanguage;import org.jetbrains.annotations.NonNls;import org.jetbrains.annotations.NotNull;public class SimpleTokenType extends IElementType {public SimpleTokenType(@NotNull @NonNls String debugName) { super(debugName, SimpleLanguage.INSTANCE);}@Overridepublic String toString() {return "SimpleTokenType." + super.toString();}}3 定义元素类型package com.simpleplugin.psi;import com.intellij.psi.tree.IElementType;import com.simpleplugin.SimpleLanguage;import org.jetbrains.annotations.NonNls;import org.jetbrains.annotations.NotNull;public class SimpleElementType extends IElementType {public SimpleElementType(@NotNull @NonNls String debugName) { super(debugName, SimpleLanguage.INSTANCE);}}4 定义语法以/com/simpleplugin/Simple.bnf文件定义属性语言语法。

CAS-单点登录操作文档

CAS-单点登录操作文档

CAS-单点登录操作文档这人CAS 在 Tomcat 中实现单点登录1证书生成及导入1.1Server端证书配置1.2JAVA信任证书库D:\Program Files\Java\jdk1.5.0\jre\lib\security\cacertscacerts证书库默认密码-storepass changeit查看证书1.1.1.2 keytool -list -keystore cacerts -storepass changeit如果存在则删除1.1.1.1 keytool -delete -alias tomcatsso -keystore cacerts -storepasschangeit创建证书库1.1.1.3 keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn="-keystore server.keystore -storepass 12345678导出证书1.1.1.4 keytool -export -alias tomcatsso -file tomcatsso.crt -keystoreserver.keystore -storepass 12345678加入JAVA信任证书库1.1.1.5 keytool -import -alias tomcatsso -file tomcatsso.crt-keystore ../jre/lib/security/cacerts -storepass changeit说明:在生成key的过程,"cn=" 中的为Server端的域名(必填)。

1.2.1TOMCAT 配置SSL支持<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"minSpareThreads="5" maxSpareThreads="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" maxThreads="200"scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="D:/javatools/Tomcat 6.0/conf/server.keystore"keystorePass="12345678"truststoreFile="D:/ProgramFiles/Java/jdk1.5.0/jre/lib/security/cacerts"truststorePass="changeit"/>常用的配置属性:clientAuth如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。

Java模拟用户登陆的简单案例

Java模拟用户登陆的简单案例

模拟用户登录【案例介绍】1.任务描述在使用一些APP时,通常都需要填写用户名和密码。

用户名和密码输入都正确才会登录成功,否则会提示用户名或密码错误。

本例要求编写一个程序,模拟用户登录。

程序要求如下:(1)用户名和密码正确,提示登录成功。

(2)用户名或密码不正确,提示“用户名或密码错误”。

(3)总共有3次登录机会,在3次内(包含三次)输入正确的用户名和密码后给出登录成功的相应提示。

超过3次用户名或密码输入有误,则提示登录失败,无法再继续登录。

在登录时,需要比较用户输入的用户名密码与已知的用户名密码是否相同,本案例可以使用Scanner类以及String类的相关方法实现比较操作。

2.运行结果登录成功的运行结果如图5-3所示图5-3 用户登录成功运行结果图登录失败的运行结果如图5-4所示图5-3 用户登录失败运行结果图【案例任务】●学会分析“模拟用户登录”任务的实现思路。

●根据思路独立完成“模拟用户登录”任务的源代码编写、编译及运行。

●掌握String类及Scanner类中常用方法的使用。

●掌握之前学习的if判断知识。

【案例思路】(1)分析任务描述可知,已知用户名密码,定义两个字符串表示即可。

(2)键盘录入要登录的用户名密码。

用Scanner实现。

(3)拿键盘录入的用户名密码和已知的用户名密码进行比较,给出相应的提示,字符串内容比较用equles实现。

(4)循环实现多次机会。

这里次数明确,用for循环实现。

并在登录成功的时候。

用break结束循环。

【案例实现】模拟用户登录的实现代码,如文件5-3所示。

文件5-3 example3.java1package com.itheima;2import java.util.Scanner;3public class example3 {4public static void main(String[] args) {5//已知用户名密码,定义两个字符串表示即可。

java登陆原理

java登陆原理

java登陆原理
Java登录原理是通过验证用户输入的用户名和密码来判断用户是否合法,并根据验证结果为用户提供相应的访问权限。

具体实现过程如下:
1. 用户在登录界面输入用户名和密码,并点击登录按钮。

2. 后台服务器接收到用户的登录请求,并从数据库中检索出与输入的用户名匹配的用户信息。

3. 如果找到了相应的用户信息,则将数据库中存储的用户密码与用户输入的密码进行比对。

4. 如果两者匹配,则说明用户输入的密码是正确的,登录验证成功。

5. 系统根据用户的权限设置,决定为其提供相应的操作界面和功能。

6. 如果用户输入的密码与数据库中存储的密码不匹配,或者输入的用户名不存在,则登录验证失败,系统将提示用户重新输入正确的用户名和密码。

需要注意的是,为了保证用户密码的安全性,通常会对密码进行加密存储,而非明文存储。

在验证密码时,会将用户输入的密码进行相同的加密算法处理,然后与数据库中存储的加密密码进行比对。

这样即使数据库被非法访问,也不会直接泄露用户的密码信息。

另外,为了提高用户体验和安全性,登录过程通常还会包括一些验证码、记住密码、自动登录等功能的实现,以及一些额外的安全验证措施,如限制登录次数、用户锁定等。

这些都是为了保障用户信息的安全和提升系统的可用性。

java整合discuz单点登录邹颢的博客

java整合discuz单点登录邹颢的博客

java整合discuz单点登录邹颢的博客java里没有好的论坛,唯一好的大概就是jsprun,这个是仿discuz 论坛,不过貌似团队不做了,也停止了更新了最近项目里需要一个论坛,碰巧我以前是做php的,对于discuz ucenter以前也做过单点登录,于是开始把discuz整合进项目中.首先先安装ucenter,与discuz整合,如果不知道ucenter是什么?请自行百度.现在的discuz项目直接下载下来在安装的时候会让你选择是否整合进ucenter,选择是就行了,如果是已经的论坛请自行整合进ucenter.java项目中有人已经编写了discuz-ucenter-for-java.我们用这个插件就可以实现java与php的对接的先去https:///p/discuz-ucenter-api-for-java/downloads/list下载discuz-api-for-java..本人的环境:apache-php :80端口java:8080端口网上也可以把php整合进tomcat,让php和java都用同一个端口,具体方法我就不讲述我这里php和java分别用的是2个端口工具都差不多了.下面开始步骤了.1:进入ucenter后台.ucenter->应用管理->添加新应用2:填写应用名称,应用的主url,通讯密钥,勾上开启同步登陆.,其他的都可以不填.创建好后,记录应用ID3:将discuz-ucenter-api-for-java 加入到项目中,配置web.xml Java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <!-- discuz 论坛ucenter 整合 --><servlet><servlet-name>api</servlet-name><servlet-class>com.fivestars.interfaces.bbs.api.UC</servlet-class><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>api</servlet-name><url-pattern>/api/uc.php</url-pattern></servlet-mapping><!-- discuz 论坛ucenter 整合 -->4:配置config.propertiesPHP1 2 3 4 5 UC_API = http://localhost/discuz/uc_server UC_IP = UC_KEY =x2ydu036Ubtf55gfyf2bR7Mc62v2a7J7rcrdA9Ncx259B323wegb87P5l7CaYd34 UC_APPID = 2 UC_CONNECT =UC_API 就是ucenter 的路径UC_IP 可以不填,会自动根据域名解析该IPUC_KEY 就是通讯密钥UC_APPID 就是ucenter 添加应用的ID配好就可以,通讯就应该成功了.如果不成功,请添加ip.还有注意config.properties 的路径,我是自己修改了名字和路径..修改路径的话记得去Client.java 里修改路径,因为它这里会读取config.properties接下来就是关于discuz-api-for-java 的一些api1:同步注册Java1 2 3 4 5 6 7 8 9 10 11Client discuzClient = new Client(); discuzClient.uc_user_register("zhangsan","password","zouhao619@gma "); /** -1 : 用户名不合法 -2 : 包含不允许注册的词语 -3 : 用户名已经存在 -4 : email 格式有误 -5 : email 不允许注册 -6 : 该 email 已经被注册 >1 : 表示成功,数值为 UID */ 2:同步登陆Java1 2 3 4 5 6 Client discuzClient = new Client();String loginResult = discuzClient.uc_user_login("zhangsan","password");//根据账户密码获取用户相关信息 LinkedList<String> userInfo=XMLHelper.uc_unserialize(loginResult); uid=Integer.valueOf(userInfo.get(0));//获取用户的ID String $ucsynlogin = discuzClient.uc_user_synlogin(uid);//根据ID 进行同步登陆 response.getWriter().print($ucsynlogin);//把$ucsynlogin 输出到页面上就行了.这样就实现了同步登陆,实际上就是一个script 标签可以进行跨域的功能注意事项:1:ucenter->注册设置->是否允许同一个email 注册多个用户根据自己的实际情况来决定2:同步注册后,需要到discuz 登录一次,才能实现同步登录.如果进行同步注册后,账户没有登录,那么也无法实现同步登录,如果你要实现同步注册后,就能登录.就修改uc_server/model/user.php 第129行左右的add_user($username, $password, $email, $uid = 0, $questionid = ”, $answer = ”, $regip = ”)方法修改为如下内容:PHP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {$regip = empty($regip) ? $this->base->onlineip : $regip;$salt = substr(uniqid(rand()), -6);$password = md5(md5($password).$salt); $sqladd = $uid ? "uid='".intval($uid)."'," : ''; $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',"; $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt'"); $uid = $this->db->insert_id(); $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'"); //begin $this->db->query("INSERT INTO `discuz`.dz_common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10', regdate='".$this->base->time."', credits='0', timeoffset='9999'"); $this->db->query("INSERT INTO `discuz`.dz_common_member_status SET uid='$uid', regip='$regip', lastip='$regip', lastvisit='".$this->base->time."', lastactivity='".$this->base->time."', lastpost='0', lastsendmail='0'");$this->db->query("INSERT INTO `discuz`.dz_common_member_profile SET uid='$uid'");$this->db->query("INSERT INTO`discuz`.dz_common_member_field_forum SET uid='$uid'");$this->db->query("INSERT INTO `discuz`.dz_common_member_field_home SET uid='$uid'");$this->db->query("INSERT INTO `discuz`.dz_common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");//endreturn $uid;}在添加到ucenter 的同时添加到discuz 表中.3:如果你要实现同步登录,在页面输出discuzClient.uc_user_synlogin(uid),他其实是一段script,用来跨域访问的.但是有可能由于网络原因,你还没有发出这个请求,你就先跳转页面了.所以造成无法同步登录.我用的方法是,用jquery.$.script()方法来加载这个js,由于是跨域,$.script()无法有返回,这个时候需要在php 服务器端设置PHP1 header("Access-Control-Allow-Origin:*"); //允许任何访问(包括ajax 跨域)详细代码如下:JavaScript1 2 3 4 5 6 7 <script>$(function(){$.getScript('script 的目标url', function(){location.href='bbs 路径';});});</script>确定执行完了这个js 同步登录后,在执行location 进行跳转。

java 单点登录实现方案

java 单点登录实现方案

java 单点登录实现方案Java单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户使用一组凭据(如用户名和密码)登录到多个相关的应用程序或系统,而无需在每个应用程序中单独进行身份验证。

本文将介绍Java单点登录的实现方案。

在实现Java单点登录时,可以采用以下方案:1. 基于Token的认证方案:这是目前较为常见的单点登录实现方案之一。

用户在登录成功后,后台生成一个Token,将其返回给用户,并存储在服务器端。

用户在访问其他应用程序时,将Token作为身份凭证发送到服务器端进行验证。

服务器端通过验证Token的有效性来判断用户的身份。

常见的Token生成方式包括JWT(JSON Web Token)和OAuth2.0。

2. 基于代理的认证方案:该方案使用一个代理服务器来处理用户的身份验证。

用户在登录成功后,代理服务器会为用户生成一个身份标识,并将其存储在Cookie中。

当用户访问其他应用程序时,请求会先发送到代理服务器,代理服务器会验证用户的身份,并将请求转发给相应的应用程序。

3. 基于Session的认证方案:该方案使用Java的Session机制来实现单点登录。

用户在登录成功后,后台会为用户创建一个Session,并将Session的ID存储在Cookie中。

当用户访问其他应用程序时,应用程序会通过Cookie中的Session ID来验证用户的身份。

无论采用哪种方案,Java单点登录的实现步骤大致相同:1. 用户登录:用户在登录页面输入用户名和密码进行登录。

后台验证用户的凭据是否正确,如果正确则进行下一步操作。

2. 生成身份凭证:在用户登录成功后,后台会生成一个身份凭证(Token、身份标识或Session),并将其返回给用户。

3. 存储身份凭证:服务器端会将生成的身份凭证存储起来,可以存储在数据库、缓存或服务器内存中。

4. 跨应用程序身份验证:当用户访问其他应用程序时,应用程序会验证用户的身份凭证的有效性。

单点登录原理及CAS实现【面试+工作】

单点登录原理及CAS实现【面试+工作】单点登录原理及实现sso【面试+工作】WEB的登录那些事说道账户登录和注册,其实我们每天都在亲身感受着,像微博、知乎还有简书等等。

我们总是需要定期的去重新登录一下,对于这种认证机制,我们都能说出来两个名词,Cookie、Session。

的确没错,Cookie和Session是实现这一切的核心。

为什么会有Cookie和Session?区别是什么?引入这两个概念的根本原因是因为Http协议是无状态的,也就是说它不能建立起多次请求之间的关系。

所以需要引入一个能有浏览器或服务器保存的一个上下文状态,也就是Cookie和Session。

说到底Session的实现是依赖于Cookie的,因为Cookie是真正的由浏览器保存的状态,Session是利用了JSessionID。

在我看来其实两者有差异,但是根本的依赖是一样的。

Cookie也是有生命周期的,像Session级别或者有一定“寿命”的Cookie。

一切是由浏览器去维护的。

常见的跨域登录问题之前楼主主要是做账户和Passport这方面的工作,其实在跨域这也是碰见了一些问题。

对于同一个根域下的登录问题如果我们的站点有不止一个业务,那么他们可能部署在不同的机器上,也往往需要不同的域名进行区分。

但是所有的业务又都是依赖于一套账户体系,那么我们这时候需要通过一次登录解决所有站点的登录问题,那么我们这个时候可以使用一个最笨的方法:那就是一次登录成功,将Cookie写到根域下,那么这样所有的站点就能实现,同一个根域下的Cookie共享,自然实现了”单点登录“。

对于多个根域下的登录问题如果是多个根域名,那么这种情况下上面的机制就不能实现“单点登录”了。

因为之所以上面可以实现“单点登录”的效果。

是因为浏览器和Http协议的支持。

但是对于跨根域的站点之间进行Cookie 的共享是比较复杂的。

方法1:登录成功之后将Cookie回写到多个域名下。

单点登陆实施方案

单点登陆实施方案单点登录(Single Sign-On,简称SSO)是一种用户只需一次登录,就可以访问多个相关但独立的软件系统的认证技术。

通过单点登录,用户可以使用一个帐号和密码登录多个系统,而不需要在每个系统中单独登录。

实施单点登录方案可以为用户提供更便捷的登录体验,同时也能提高系统的安全性和管理效率。

下面,我们将介绍一种单点登录的实施方案,希望能够为您的系统集成提供一些参考。

首先,我们需要选择一个合适的单点登录系统。

目前市面上有很多成熟的单点登录解决方案,如Shibboleth、CAS、OAuth等。

在选择时,需要考虑自身系统的特点和需求,以及单点登录系统的稳定性、安全性和易用性。

其次,需要进行系统集成和配置。

在集成过程中,需要将单点登录系统与现有的用户认证系统进行对接,确保用户信息能够同步和共享。

同时,还需要对相关系统进行必要的配置,以确保单点登录的顺利实施。

接下来,需要进行单点登录系统的部署和测试。

在部署过程中,需要确保单点登录系统的稳定性和性能。

同时,还需要进行全面的测试,包括用户登录、注销、会话管理等各项功能的测试,以确保单点登录系统能够正常运行。

最后,需要进行相关系统的培训和推广。

在实施单点登录方案后,需要对相关系统的管理员和用户进行培训,以确保他们能够熟练地使用单点登录系统。

同时,还需要积极推广单点登录的优势和便利性,以提升用户的使用体验和满意度。

总的来说,单点登录的实施方案需要经过选择、集成配置、部署测试和培训推广等多个环节。

在实施过程中,需要充分考虑系统的特点和需求,确保单点登录系统能够顺利运行并为用户带来便利。

希望以上方案能够为您的系统集成提供一些参考,如有任何疑问或需求,欢迎随时与我们联系。

Java代码实现jira单点登录


b) 获取 cookie 的方式
package com.atlassian.jira.security.cuslogin; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; public class SSOnCookie { private final String PORTAL_COOKIE_KEY = "JIRA_USER_NAME_KEY"; private HttpServletRequest request = null; public static SSOnCookie getSSOCookie(HttpServletRequest request) { SSOnCookie cookie = new SSOnCookie(); cookie.request = request; return cookie; } public boolean isExpired() { Cookie[] cookies = request.getCookies(); System.out.println("cookie"+cookies); if (null == cookies || cookies.length == 0) return true; System.out.println("cookie length:"+cookies.length); for (Cookie cookie : cookies) { System.out.println("cookie name:"+cookie.getName());
Java 代码实现 jira 单点登录

单点登录的几种实现方式

单点登录的几种实现方式单点登录(Single Sign-On,简称SSO)是一种常见的身份验证机制,允许用户在一个平台上登录后,无需再次输入用户名和密码即可访问其他关联的认证系统。

以下是单点登录的几种实现方式:1. SAML(安全断言标记语言)* SAML是一种基于XML的标准,用于在不同安全系统之间交换认证和授权信息。

* 当用户在一个支持SAML的网站上登录时,网站会生成一个包含用户身份信息的SAML 断言(assertion),并将其发送给身份提供者(Identity Provider)。

* 身份提供者验证用户的身份后,将SAML断言转发给目的网站,以允许用户访问。

* SAML支持单点登录和单点登出功能,并且可以与多种身份管理系统集成。

2. OAuth(开放授权)* OAuth是一种基于令牌的身份验证协议,允许第三方应用程序访问用户在另一个服务提供商上的受保护资源,而不需要共享用户的凭据。

* 当用户授权第三方应用程序访问其受保护资源时,服务提供商会向该应用程序提供访问令牌,而不是用户的密码。

* 应用程序使用访问令牌来请求受保护的资源,服务提供商验证令牌的有效性并返回相应的数据。

* OAuth常用于API和微服务之间的身份验证和授权。

3. OpenID Connect(OIDC)* OpenID Connect是基于OAuth 2.0的身份验证协议,它建立在OAuth 2.0之上,并扩展了其功能以支持身份验证。

* 当用户尝试访问一个支持OpenID Connect的应用程序时,应用程序会重定向用户到身份提供者。

* 用户在身份提供者上登录后,身份提供者会返回一个包含用户身份信息的ID令牌(ID token),并将其发送回应用程序。

* 应用程序使用ID令牌来验证用户的身份,并允许其访问受保护的资源。

4. Kerberos* Kerberos是一种网络认证协议,它使用加密和密钥交换技术来确保只有经过身份验证的用户才能访问特定的网络资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档