从普通登录到单点登录(SSO)

无状态的HTTPHTTP是无状态的,每条请求都是独立进行的。同一个用户多次发起请求,服务端无法识别多个HTTP请求来自同一个用户。为了解决这个问题,引入了会话机

各位老铁们,大家好,今天由我来为大家分享从普通登录到单点登录(SSO),以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

基于会话的身份验证是传统方法,并且已经使用了很长时间。但也存在一些缺点:

服务器负担很重。服务器需要为每个用户维护一个会话对象,这可能会导致服务器负载增加,并且在大规模应用中难以水平扩展。在分布式架构中,即当一个应用程序运行在多个服务器上时,用户可能会在不同的服务器上交替访问该应用程序,因此需要保证会话状态可以在服务器之间共享。不适用于无状态服务。对于像RESTful API 这样的无状态服务,基于令牌的身份验证更合适。

跨域认证

随着前后端开发模式的变化,前后端分离部署的可能性更大。前端静态资源部署在一台服务器上,后端API部署在另一台服务器上。这意味着前端登录需要跨域认证。跨域认证利用跨域请求进行身份认证。几种常见的跨域认证方案:

JSOP:只能用于跨域请求,不能用于认证。 CORS:可用于跨域请求和身份认证。然而,当多个业务系统调用同一个API服务下的接口时,随着业务系统数量的增长,后端开发人员需要频繁更改跨域配置,以使新开发的系统能够进行跨域请求。出现这种情况时,使用nginx反向代理将跨域控制权转移到前端是一个比较好的解决方案。 iframe场景下,使用localstorage进行跨域存储,通过postmessage和iframe跨域共享localstorage。但是,Safari 无法使用postMessage。您可以使用url 跨域共享本地存储。

基于令牌(token)的认证

为了解决分布式架构中的会话认证问题,可以使用基于令牌的认证。由于token只会存储在客户端,这样可以减轻服务器的负担,提高服务器的水平扩展能力。

基于令牌(token)的认证时序图

以下是基于token认证的时序图:

优势:

减轻服务器的负担。因为token只会存储在客户端,不会存储在服务器端。改进了服务器端水平扩展能力。因为服务器端水平扩展不再需要处理会话状态的同步逻辑。缺点:

已发行的令牌无法撤销。 Token包含有效期信息,在整个有效期内无法撤销,直至过期。单点退出是不可能的。如果使用token方式实现单点登录SSO功能,则很难实现单点登录SLO。由于单点注销涉及将用户从所有关联系统中注销,因此需要其他机制来实现此功能。以上是最基本版本的token认证方法。仍存在一些不足。主要用于讲解token认证的核心流程。为了避免上述缺点,需要配合其他机制(OAUTH部分将在下面深入解释)。

令牌(token)的生成

1. 标头

从普通登录到单点登录(SSO)

Header部分是描述JWT元数据的JSON对象,如下:

{ ‘alg’: ‘HS256’, ‘typ’: ‘JWT’}

alg表示签名算法,type表示token类型。最后,使用Base64URL算法将上述JSON对象转换为字符串。

2. 有效载荷

Payload部分是一个JSON对象,代表JWT实际传输的数据。官方定义了以下字段供选择:

{ ‘alg’: ‘HS256’, ‘typ’: ‘JWT’}

还可以自定义字段,最后使用Base64URL算法将上面的JSON对象转换为字符串。

3. 签名

签名部分是前两部分的签名,防止数据被篡改。公式如下:

HMACSHA256( base64UrlEncode(标头) + ‘.’ + base64UrlEncode(有效负载), 秘密)

Secret 是仅由服务器拥有的密钥。

单点登录(SSO)

用户只需登录一次即可访问多个关联系统,避免多次登录的麻烦。单点登录简化了登录流程,提升了用户体验。目前常见的实现方式有两种:CAS和OIDC。

从普通登录到单点登录(SSO)

CAS

CAS(中央身份验证服务)是一种用于实现单点登录SSO 的开源协议。它提供集中式身份验证服务器(CAS)。 CAS服务器负责用户登录和身份认证,并生成访问其他应用程序的票据。下图是CAS标准流程的时序图:

有几点需要注意:

CAS实现基于票据的单点登录。票证是一种身份验证凭证,与令牌有些不同。 CAS 包含两个票证:TGT 和ST。 TGT是长期有效凭证,用于获取短期ST凭证; ST 凭证用于验证特定服务的身份。

OIDC(OpenID Connect)

OAUTH 是一种在全球范围内广泛使用的授权协议。目前它的版本是2.0,但它并不是专门为单点登录SSO 设计的协议。 OIDC是基于OAUTH实现的身份认证协议。它是OAUTH的超集,可以实现单点登录功能。与CAS 不同,OIDC 是一种基于令牌的身份验证方法。

1.OAUTH2.0

OAUTH是一种授权协议,旨在解决能够使用同一帐户登录所有应用程序的问题。现在很多第三方应用都接入了微信登录,所以微信登录是一项主要的身份认证服务。所有接入微信登录系统的APP都可以直接使用微信账号登录。

1.1. OAUTH2.0原理

OAuth 2.0的运行流程如下所示,摘自RFC 6749。

认证服务器除了返回访问令牌之外,还返回刷新令牌。

access token:表示访问令牌。有效期短,解决了token无法撤销的问题。刷新令牌:代表更新令牌。有效期较长,用于获取access token。 2.OIDC

下图是在网上找到的一个基于token实现单点登录的时序图。虽然与标准OIDC流程有所不同,但也大致解释了基于令牌实现单点登录的流程。

用户评论

从普通登录到单点登录(SSO)
龙吟凤

以前每次换个网站都得重新登录,现在有了 SSO 简直爽歪!一个账号通行多个平台,太方便了!

    有15位网友表示赞同!

从普通登录到单点登录(SSO)
寻鱼水之欢

这篇文章我受益匪浅啊,之前对 SSO 的了解还停留在表面,读完后真切体会到它的安全性优势和便利性真是绝了! 职场朋友们赶紧去看一看吧,这个时代已经离不开安全便捷的登录方式了!

    有16位网友表示赞同!

从普通登录到单点登录(SSO)
蔚蓝的天空〃没有我的翅膀

虽然 SSO 比传统登录方便多了,但总觉得多了一个中间环节,万一系统出问题,登录就变成个麻烦事啊…

    有12位网友表示赞同!

从普通登录到单点登录(SSO)
灼痛

这篇文章说的很全面,从需求出发分析 SSO 的作用和优点,再到具体的实现方式,读完之后感觉对 SSO 有一种更清晰的认识了。

    有19位网友表示赞同!

从普通登录到单点登录(SSO)
烟花巷陌

我刚开始听说 SSO 时还以为它只是企业内部使用的,没想到现在越来越多的网站都用上了!看来将来单点登录已经成为了网络安全的新标准啊!

    有5位网友表示赞同!

从普通登录到单点登录(SSO)
↘▂_倥絔

SSO 的优势确实挺明显,但实现起来也需要投入不少精力和成本,小型网站可能就难以实现吧?

    有18位网友表示赞同!

从普通登录到单点登录(SSO)
孤城暮雨

我公司内部用的 SSO ,感觉挺好用的,一个账号管理全局,方便又提高了信息安全。 只是有些时候操作流程还是比较复杂,希望能更人性化一点…

    有12位网友表示赞同!

从普通登录到单点登录(SSO)
弃我者亡

说的对啊! 单点登录可以有效减少密码泄露的风险,保护用户隐私和数据安全确实重要啊!

    有8位网友表示赞同!

从普通登录到单点登录(SSO)
盲从于你

不过这篇文章好像忽略了一个问题,那就是 SSO 也带来了新的安全隐患,比如中央认证服务器一旦被攻击,就可能会导致整个系统的瘫痪… 我们需要认真考虑这个问题,避免打虎不防反咬人啊!

    有8位网友表示赞同!

从普通登录到单点登录(SSO)
瑾澜

之前因为密码忘记经常找客服帮忙,现在有了 SSO 后真的省心很多! 一次登录就能通行所有网站,太棒了!

    有12位网友表示赞同!

从普通登录到单点登录(SSO)
呆萌

这篇文章写得很好,很有逻辑性和条理性。 让我对单点登录(SSO)有了一个更加深入的理解,原来它不仅仅是提高用户体验的一个方式,还包含了很多安全和管理方面的考量…

    有18位网友表示赞同!

从普通登录到单点登录(SSO)
你tm的滚

我公司正在考虑采用 SSO 系统,这篇博客提供了很好的参考信息,可以帮助我们更好地了解这个系统的优点和缺点。

    有19位网友表示赞同!

从普通登录到单点登录(SSO)
可儿

从普通登录到单点登录,这真是一个划时代的进步啊!以前还要记住那么多密码,现在只有一个账号搞定所有网站的安全访问,真是太轻松了!

    有12位网友表示赞同!

从普通登录到单点登录(SSO)
代价是折磨╳

个人觉得 SSO 的缺点是用户选择账号的时候,可能会比较混乱,毕竟需要记住每个平台的 SSO 服务提供商。 虽然SSO本身很便捷,但是多平台整合和管理确实会增加一些难度…

    有20位网友表示赞同!

从普通登录到单点登录(SSO)
仅有的余温

对普通用户来说,理解 SSO 的原理并不容易,但这篇文章写的很通俗易懂,让我更容易理解这个概念。

    有14位网友表示赞同!

从普通登录到单点登录(SSO)
把孤独喂饱

从普通登录到单点登录,是技术发展的必然趋势!安全可靠、便捷高效—这是SSO所带来的重大改变,未来将会在各个领域得到更广泛的应用。

    有7位网友表示赞同!

从普通登录到单点登录(SSO)
稳妥

我一直认为 密码管理是个大问题,而 SSO 提供了一个很好的解决方案,希望更多网站都能重视这个方面的安全提升工作。

    有10位网友表示赞同!

从普通登录到单点登录(SSO)
旧事酒浓

从普通登录到单点登录(SSO),这篇文章把我带回了网络发展的历程,想想当年需要记住这么多不同的账号密码,真的让人头疼

    有7位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/123768.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午5:48
下一篇 2024年9月1日 下午5:49

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注