单登录(SSO)解释了
钥匙要点
- >单登录(SSO)是一个过程,允许用户仅在一次身份验证其身份后访问多个服务,从而消除了通过密码或其他系统反复确认身份的需求。 > 在开发与其他服务互动或使用第三方服务时,实施SSO的
- 可以是有益的,因为它可以确保用户不需要单独登录每个服务。 > SSO过程在不同的服务上略有不同,但基本思想保持不变:生成令牌并验证它。应实施强大的安全措施,例如多因素身份验证和常规密码更新,以减轻与SSO相关的风险。
- >
>
>单个登录(SSO)是一个过程,该过程允许用户在使用用户身份验证(即登录一次)后访问多个服务。这涉及到登录主要服务后,用户已授予所有服务的身份验证。除其他好处外,SSO避免了通过密码或其他身份验证系统一遍又一遍地确认身份的单调任务。>
>让我们更详细地研究SSO,我们将使用非常著名的服务来展示其用途和好处。身份验证过程
SSO的基本过程如下:
第一步是登录主要服务(例如,Facebook或Google)。
- >
- >您访问新服务时,它将您重定向到原始服务(或父)服务,以检查您是否已登录到该服务。 >
- >返回一个otp(一次性密码)令牌。 > 然后,由父级服务器的新服务验证OTP令牌,只有在成功验证之后才是用户授予的条目。
- 尽管为SSO制作API是一项繁琐的任务,尤其是在处理安全方面,但实施是相对容易的任务!
- > >在Google服务中使用SSO的一个很好的例子。您只需要登录一个主要的Google帐户即可访问YouTube,Gmail,Google,Google Analytics(分析)等不同的服务。
> SSO
>当您构建自己的产品时,您需要确保其所有组件都使用相同的身份验证。当您的所有服务都局限于您自己的代码库时,这很容易做到。但是,借助诸如Disqus评论系统和用于客户关系管理的Freshdesk之类的流行服务,最好使用这些服务,而不是从头开始创建自己的。
,但是使用此类第三方服务引起了一个问题。由于他们的代码托管在各自的服务器上,因此用户也需要在其服务上明确登录,即使他们登录到您的网站。如前所述,解决方案是SSO的实现。>理想情况下,您提供了一双钥匙 - 公共和私人。您为登录用户生成一个令牌,并将其与您的公钥一起发送到服务以进行验证。经过验证后,用户将自动登录到服务。为了更好地理解这一点,让我们以一个真实的例子。
>disqus sso
> disqus是一个流行的评论托管网站的服务,它提供了许多功能,例如社交网络集成,审核工具,分析,甚至可以导出评论的能力。它最初是YCombinator的创业公司,并已成长为世界上最受欢迎的网站之一!
>>由于DISQUS评论系统已嵌入您的页面中,因此,如果他或她已经在您的网站上登录,则必须在Disqus中第二次登录。 Disqus具有有关如何集成SSO的广泛文档。
>您首先使用私人和公共disqus api键生成一个称为remote_auth_s3的密钥,用于登录用户。当您将SSO注册为Disqus中的免费附加组件时,您将提供公共和私钥。>您将用户的信息(ID,用户名和电子邮件)传递给DISQU,以作为JSON的身份验证。您会在页面上渲染DISQUS系统时生成一条消息。为了更好地理解它,让我们看看用Python编写的示例。
>
> disqus在github上提供了几种流行语言中的代码示例。。
生成消息>示例Python代码(在GitHub上找到可以在您的网站上登录用户如下。
>。
>初始化disqus注释
然后,您在JavaScript请求中将此生成的令牌以及您的公钥发送到Disqus。如果验证身份验证,生成的注释系统已经登录了。>我们可以在博客碗上看到SSO的实现,该博客碗是Python/Django开发的博客目录。如果您已登录到网站,则应在渲染DISQUS评论系统时登录。在此示例中,该人对象存储ID(对于网站上的每个人来说是唯一的),电子邮件和PEN_NAME。该消息的生成如下所示。
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>
>在前端,您只需打印此变量即可执行脚本。有关现场演示,您可以在博客碗中访问此帖子,并检查底部的评论。自然,您不会登录。
>
接下来,登录博客碗,再次访问同一帖子(您需要登录以查看效果)。请注意,您已登录下面的评论系统。
>
>博客碗提供的另一个有趣的功能是匿名,在发布内容时(如本文)。想一想一种情况,您希望用户以匿名用户(例如在Quora上)发布有关DISQU的评论的答复。我们以简单的方式出路,并在ID上附加了大量。为了与用户相关联(因此,它与用户的其他评论都不会出现),我们也会生成一个唯一的电子邮件。这样可以将您的匿名评论融合在一起,但并不将其与其他用户的原始个人资料或匿名评论相结合。
>
,这是代码:
sso <span>= get_disqus_sso({ </span> <span>'id': person.id, </span> <span>'email': person.user.email, </span> <span>'username': person.pen_name </span><span>})</span>
结论
尽管不同服务的SSO过程略有不同,但是它们背后的基本思想是相同的 - 生成令牌并验证它!我希望这篇文章能帮助您深入了解应用程序如何集成SSO,也许这将帮助您自己实施SSO。
如果您有任何纠正,问题或与SSO共享自己的经验,请随时发表评论。>关于单次登录(SSO)
的常见问题
>单登录(SSO)的主要目的是什么?具有一组登录凭据。这消除了记忆多个用户名和密码的需求,从而提高了用户的便利性和生产力。 SSO还通过减少密码管理不善和未经授权的访问的机会来提高安全性。>>单个登录(SSO)如何工作?
SSO通过在多个应用程序或网站之间建立可信赖的关系来起作用。当用户登录到一个应用程序时,SSO系统会身份验证用户的凭据并发布安全令牌。然后,该令牌用于对SSO系统中其他应用程序的用户进行身份验证,从而消除了对多个登录的需求。使用单登录(SSO)有什么好处? SSO提供了一些好处。它通过减少对多个登录的需求来简化用户体验,从而节省时间并减少挫败感。它还通过最大程度地降低与密码相关的漏洞的风险来提高安全性。此外,它可以通过减少密码重置请求的数量来降低其成本。
>>单登录(SSO)是否存在任何风险?带有潜在的风险。如果用户的SSO凭据受到损害,攻击者可以访问与这些凭据相关的所有应用程序。因此,实施强大的安全措施(例如多因素身份验证和常规密码更新)以减轻这些风险至关重要。
>单一签名(SSO)和多因素身份验证之间有什么区别( MFA)?
SSO和MFA都是身份验证方法,但它们的目的不同。 SSO通过允许用户访问具有一组凭据的多个应用程序来简化登录过程。另一方面,MFA通过要求用户在授予访问之前提供两种或多种形式的身份证明来增强安全性。
>>可以将单个登录(SSO)与移动应用程序一起使用? ,SSO可以与移动应用程序一起使用。许多SSO解决方案都提供移动支持,允许用户使用一组凭据。通过简化登录过程来改善用户体验。用户只需要记住一组凭据,从而减少了被遗忘的密码的挫败感。这也节省了时间,因为用户在访问不同的应用程序时不需要重复输入凭据。
>>哪些行业可以从单个登录(SSO)(SSO)中受益?受益于SSO。严重依赖多个应用程序(例如医疗保健,教育,金融和技术)的行业尤其可以从SSO提供的便利性和安全性中受益。
>单个登录(SSO)如何增强安全性?
SSO通过减少用户需要记住和管理的密码数量来增强安全性。这降低了弱或重复使用密码的可能性,这是网络攻击的常见目标。此外,许多SSO解决方案都结合了其他安全措施,例如多因素身份验证和加密,以进一步保护用户数据。可以将单个登录(SSO)与现有系统集成在一起吗? >是的,大多数SSO解决方案都可以与现有系统集成。但是,集成过程可能会根据特定的SSO解决方案和到位而有所不同。与经验丰富的IT团队或SSO提供商合作以确保平稳而安全的集成非常重要。
以上是单登录(SSO)解释了的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
