亚信sso远程桌面由于无法启动
亚信sso远程桌面由于无法启动,如果远程电脑正在运行,则始终显示桌面完整内容,可以通过双击桌面上的图标,或者点击开始,找到要使用的程序。这种情况可能是由于配置了客户端连接已启动基于连接的程序,但程序路径和文件名不正确。对客户端进行检查,保证程序路径和文件名是正确的。另一个原因就是服务器设置了组策略、终端服务配置或其他终端服务,指定了在连接时启动的程序,这种情况要与服务器管理员进行联系。
sso单点登录原理是当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改。
单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。
使用单点登录系统时,用户只需要登录一次,就可以访问多个系统,不需要记忆多个口令密码。单点登录使用户可以快速访问网络,从而提高工作效率,同时也能帮助提高系统的安全性。
扩展资料
要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。
另外:
1、单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中,事实上,只要统一认证系统,统一ticket的产生和校验,无论用户信息存储在什么地方,都能实现单点登录。
2、统一的认证系统并不是说只有单个的认证服务器
当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统2的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。
vcenterserversso注册失败
答:注册VR 设备失败。 您会看到以下错误:无法获取 SSL 证书: 服务器响应错误;vCenter Server 是否在侦听指定主机和端口 (Unable to obtain SSL
重启SSO服务器后 vCenter 51服务启动失败的解决方法
1 SSO服务器的主机名字改变,包含该主机加入域或退出域。 when s are applied to the operatingsystem, the machine name changes, or the machine
2 SSO服务器的硬件配置改变,如内存大小,CPU
该机制的核心在于服务器session和客户端sessionId的交互。用户登录完成后,服务器会构建用户会话session,会话内包含了用户标志及登录状态,并向浏览器返回sessoinId。之后用户在做其他接口请求时,将sessionId携带上。服务器检索到会话session并进行登录鉴权判断。
整个机制是十分简单明了的,但在设计细节上,还是由很多发挥的空间。我们先看一看session会话登录认证机制的基本流程
认证过程大致如下:
问题点:
token鉴权是一种直接把用户的登录凭证直接存到客户端的方案。在用户登录验证成功之后,将登录凭证做数字签名和加密之为token返回给客户端。用户在做其他接口请求时,将token携带上。服务器将该token解密验签判断其有效性。
整个机制的关键在于token的生成和验证
问题:
这两种登录认证机制差异还是蛮大的。
从原理层面上看,session会话机制中,服务器为你保管了登录凭证,然后给了客户端一个信物。客户端带着信物访问,服务器能根据这个信息找到登录凭证就是有效的;token认证机制中,服务器将登录凭证打上记号锁在盒子里再给到客户端。客户端带着这个上锁的盒子访问,服务器拿出他的锁打开并检查记号,都对上了则说明登录凭证可以使用。当然,登录凭证里也有失效
从效果层面上看,session会话机制中,服务器需要自己腾出空间保存凭证和记录,而token认证机制中,服务器则只需保管好钥匙,信息本身是保存在客户端。因此,session会话需要更多存储空间;token认证机制需要额外的token解析时间,本身不存储任何用户的登录状态
但有时候,又不是那么绝对。例如token鉴权中,对于强业务的web系统,后端web服务必然也还会再关联个session会话做业务逻辑的处理;对于要求用户单端登录的情况,如果同时异地登录,旧的token要求被踢下,此时后端web服务就得存储用户token及ip或设备等信息。具体的设计原则,还是得看系统的业务属性。毕竟,一个系统,可不会仅包含用户登录鉴权。
略
流程示意图:
[上传失败(image-a55a38-1609677363093)]
流程示意图:
以上两个流程实际上大同小异,都遵循外部鉴权系统的两个核心步骤————鉴权认证中心(外部账号系统、自有SSO认证中心)在登录完成后颁发令牌,业务系统拿着该令牌向鉴权认证中心请求验证。 前一步可以通过cookie或url参数的性质通过前端传到业务系统,该令牌被泄露了也无关紧要;第二步则由后台服务向鉴权中心发起认证,这里则需要服务之间的互信。oauth机制中,可以通过appid和secret来保证互信。SSO认证中心则可以通过秘钥管理的方式来保证互信。
四种方式
Cookie 出现的原因: HTTP 协议是无状态的,每次请求都会建立一个新的链接,请求结束就会断开链接,优点就是可以节省链接资源,缺点就是无法保存用户状态。Cookie 的出现就是为了解决这个问题。
Cookie 是存储在浏览器中的,可以通过 Js 和 set-cookie 这个响应字段来进行设置。
cookie 的限制:
有了 cookie 之后,服务端就可以从客户端获取到信息,如果需要对信息进行验证,那么还需要 session
服务端在收到客户端的请求之后,会在服务器中开辟一片内存空间来存放 session
第一次登陆之后,下次再访问的时候就会携带这个 cookie,服务端就可以根据 sessionId 进行验证用户是否登陆(判断这个 sessionId 和服务端保存的 sessionId 是否一致,是否有这个 sessionId 的记录或者记录是否有效)
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。
Token 是 服务器 生成的一个字符串,作为客户端请求的一个令牌。第一次登陆之后,服务器会生成一个 Token 返回给客户端,客户端后续访问的时候,只需带上这个 Token 进行身份认证
缺点
JWT(Json Web Token)
服务端不需要存储 Token 那么服务端是怎么验证客户端传递过来的 Token 是否有效的呢?
答案:
Token 并不是杂乱无章的字符串,而是通过多种算法拼接而成的字符串
header 部分指定了这个 Token 所使用的签名算法
payload 部分表明了这个 JWT 的意图
signature 部分为 JWT 的签名,主要是为了让 JWT 不被随意的篡改
签名的部分有两个步骤
一:
二:
最后的 Token 计算如下:
单点登陆指的是公司会搭建一个公共的认证中心,公司里的所有产品的认证都可以在这个认证中心中完成,一个产品在认证中心认证之后,再去访问其他产品时就不需要再次认证
这个时候,由于 acom 存在已登录的 Cookie 信息,所以服务器端直接认证成功。
这个时候由于认证中心存在之前登陆过的 cookie,所以不需要再输入账号密码,直接从第四步开始执行
目前我们已经完成了单点登录,在同一套认证中心的管理下,多个产品可以共享登录态。现在我们需要考虑退出了,即:在一个产品中退出了登录,怎么让其他的产品也都退出登录?
原理也不难,其实就是在携带 ticket 去请求认证中心的时候,再去请求一下认证中心的退出登陆的 api 即可
当某个产品 ccom 退出登陆时
sso 就是一个集中地验证系统。你项目内请求时,向 sso 发一个请求,他给你个 token 你扔到游览器缓存里,请求的时候放在请求头里带着。和其他验证接口一样。 他好就好在,一个账号在不同系统里都可以登录,因为不同项目可以共用这个 token。并且通过 sso 集中管理一些用户信息,你可以方便的拿用户信息。
以微信为例子
SSO 服务器提供单一登录架构以整合您所有的网页应用程序。您只需将 SSO 服务器客户端添加到所有网页应用程序的原始登录页面。当用户用其用户名/密码登录到您的任何一个网页应用程序时,他们需要再次输入其证书信息以访问其它网页应用程序。
1 前言
技术这东西吧,看别人写的好像很简单似的,到自己去写的时候就各种问题,“一看就会,一做就错”。网上关于实现SSO的文章一大堆,但是当你真的照着写的时候就会发现根本不是那么回事儿,简直让人抓狂,尤其是对于我这样的菜鸟。几经曲折,终于搞定了,决定记录下来,以便后续查看。先来看一下效果
2 准备
21 单点登录
最常见的例子是,我们打开淘宝APP,首页就会有天猫、聚划算等服务的链接,当你点击以后就直接跳过去了,并没有让你再登录一次
下面这个图是我再网上找的,我觉得画得比较明白:
可惜有点儿不清晰,于是我又画了个简版的:
重要的是理解:
22 OAuth2
推荐以下几篇博客
《 OAuth 20 》
《 Spring Security对OAuth2的支持 》
3 利用OAuth2实现单点登录
接下来,只讲跟本例相关的一些配置,不讲原理,不讲为什么
众所周知,在OAuth2在有授权服务器、资源服务器、客户端这样几个角色,当我们用它来实现SSO的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。
授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可
之前我一直认为把那些需要权限控制的资源放到资源服务器里保护起来就可以实现权限控制,其实是我想错了,权限控制还得通过Spring Security或者自定义拦截器来做
31 Spring Security 、OAuth2、JWT、SSO
在本例中,一定要分清楚这几个的作用
首先,SSO是一种思想,或者说是一种解决方案,是抽象的,我们要做的就是按照它的这种思想去实现它
其次,OAuth2是用来允许用户授权第三方应用访问他在另一个服务器上的资源的一种协议,它不是用来做单点登录的,但我们可以利用它来实现单点登录。在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的
最后,Spring Security是用于安全访问的,这里我们我们用来做访问权限控制
4 认证服务器配置
41 Maven依赖
这里面最重要的依赖是:spring-security-oauth2-autoconfigure
42 applicationyml
43 AuthorizationServerConfig(重要)
说明:
44 WebSecurityConfig(重要)
45 自定义登录页面(一般来讲都是要自定义的)
自定义登录页面的时候,只需要准备一个登录页面,然后写个Controller令其可以访问到即可,登录页面表单提交的时候method一定要是post,最重要的时候action要跟访问登录页面的url一样
千万记住了,访问登录页面的时候是GET请求,表单提交的时候是POST请求,其它的就不用管了
46 定义客户端
47 加载用户
登录账户
加载登录账户
48 验证
当我们看到这个界面的时候,表示认证服务器配置完成
5 两个客户端
51 Maven依赖
52 applicationyml
这里context-path不要设成/,不然重定向获取code的时候回被拦截
53 WebSecurityConfig
说明:
54 MemberController
55 Order项目跟它是一样的
56 关于退出
退出就是清空用于与SSO客户端建立的所有的会话,简单的来说就是使所有端点的Session失效,如果想做得更好的话可以令Token失效,但是由于我们用的JWT,故而撤销Token就不是那么容易,关于这一点,在官网上也有提到:
本例中采用的方式是在退出的时候先退出业务服务器,成功以后再回调认证服务器,但是这样有一个问题,就是需要主动依次调用各个业务服务器的logout
6 工程结构
附上源码: https://githubcom/chengjiansheng/cjs-oauth2-sso-demogit
7 演示
8 参考
https://wwwcnblogscom/cjsblog/p/9174797html
https://wwwcnblogscom/cjsblog/p/9184173html
https://wwwcnblogscom/cjsblog/p/9230990html
https://wwwcnblogscom/cjsblog/p/9277677html
https://blogcsdnnet/fooelliot/article/details/83617941
http://blogleapoaheadcom/2015/09/07/user-authentication-with-jwt/
https://wwwcnblogscom/lihaoyang/p/8581077html
https://wwwcnblogscom/charlypage/p/9383420html
http://www360doccom/content/18/0306/17/16915_734789216shtml
https://blogcsdnnet/chenjianandiyi/article/details/78604376
https://wwwbaeldungcom/spring-security-oauth-jwt
https://wwwbaeldungcom/spring-security-oauth-revoke-tokens
https://wwwreinforcecn/t/630html
9 文档
https://projectsspringio/spring-security-oauth/docs/oauth2html
https://docsspringio/spring-security-oauth2-boot/docs/213RELEASE/reference/htmlsingle/
https://docsspringio/spring-security-oauth2-boot/docs/213RELEASE/
https://docsspringio/spring-security-oauth2-boot/docs/
https://docsspringio/spring-boot/docs/213RELEASE/
https://docsspringio/spring-boot/docs/
https://docsspringio/spring-framework/docs/
https://docsspringio/spring-framework/docs/514RELEASE/
https://springio/guides/tutorials/spring-boot-oauth2/
https://docsspringio/spring-security/site/docs/current/reference/htmlsingle/#core-services-password-encoding
https://springio/projects/spring-cloud-security
https://cloudspringio/spring-cloud-security/single/spring-cloud-securityhtml
https://docsspringio/spring-session/docs/current/reference/html5/guides/java-securityhtml
https://docsspringio/spring-session/docs/current/reference/html5/guides/boot-redishtml#boot-spring-configuration
原文链接:https://wwwcnblogscom/cjsblog/p/10548022html
0条评论