安全的基于密码的单一登入
文献发布时间:2023-06-19 10:32:14
背景技术
网络目录服务通过认证请求对由该网络目录服务控制的设备、应用和/或服务(即,资源)的访问的终端用户的身份来控制对网络资源的访问。网络目录服务可以利用身份管理系统,该身份管理系统认证发起登入(sign-on)或登录(log-in)以访问由该网络目录服务控制的资源的每个终端用户。登入过程可以由浏览器发起,该浏览器使用一组凭证(例如,用户名、密码、指纹扫描、视网膜扫描、声纹等)登入或登录到基于web的资源。响应于对用户的凭证的认证,用户会话被发起。在终端用户访问单一域内的多个资源的情况下,单一登入(single sign-on)过程可以被使用,以使得终端用户能够使用单一组的凭证在同一用户会话内访问多个基于web的资源。单一登入过程针对终端用户被授权访问的所有资源认证该终端用户的身份。
基于密码的单一登入是密码管理方案,通过该密码管理方案,对多个基于web的资源的凭证被存储在中心目录中,并且由身份管理系统管理。身份管理系统从中心目录取回凭证并且向浏览器传输回凭证,该浏览器代表用户将凭证键入资源的基于HTML的登入页面中。以这种方式,终端用户不必知悉访问资源所需要的凭证,并且终端用户自动获取访问而无需执行另一个登入过程。凭证在登入过程的终端被混淆。然而,凭证经常通过网络(诸如互联网)被传输向浏览器,其中凭证可以由恶意的用户使用网络调试工具检测到,由此呈现潜在的安全性漏洞。
发明内容
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步被描述。该发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用于限制所要求保护的主题的范围。
安全的基于密码的单一登入过程由目录服务利用,以自动地将终端用户登入到一个或多个基于web的资源(例如,web应用、服务、设备),该基于web的资源的授权由该目录服务控制。目录服务代表终端用户在终端用户的设备外部的隔离执行环境中执行到基于web的资源的登入过程。从隔离执行环境中执行登入过程返回的浏览器cookie被传输回终端用户的设备。
目录服务利用对终端用户的浏览器的浏览器扩展来与目录服务交互,以执行到目标基于web的资源的单一登入。浏览器扩展或目录登入组件从目录服务的登入过程的执行接收浏览器cookie,该浏览器cookie被用于对基于web的资源的随后的请求。
通过阅读以下具体实施方式并查看相关联的附图,这些以及其他特征和优点将变得明显。应当理解,前述一般描述和以下详细描述都仅是说明性的,而并不限制所要求保护的方面。
附图说明
图1图示了安全的基于密码的单一登入的示例性系统。
图2A-图2B是图示被用于执行安全的基于密码的单一登入的示例性方法的流程图。
图3是图示示例性操作环境的框图。
具体实施方式
所公开的主题涉及用于安全的基于密码的单一登入的机制。在本公开的一个方面,通过避免在网络通信中向终端用户的设备传输密码或凭证,该机制避免向终端用户的设备公开被用于访问基于web的资源的密码或凭证。代替地,单一登入过程在目录服务内的安全的环境中被执行并且终端用户的设备被提供浏览器cookie。浏览器cookie使得终端用户的浏览器能够自动地登入到基于web的资源而无需在终端用户的部分上的任何干预。
基于密码的单一登入经常被用于允许组织的多个终端用户访问web应用,而无需向终端用户暴露登入凭证。在基于密码的单一登入的一些实现中,登入脚本被提供给终端用户的浏览器,以使得浏览器执行登入脚本,由此自动地执行登入,而无需由终端用户进行的任何干预并且无需终端用户知悉凭证。
为了避免在通过网络被传输向终端用户的浏览器的这样的登入脚本中嵌入凭证,登入脚本在终端用户的浏览器外部并且在目录服务中的安全的执行环境中被执行。目录服务通过认证请求对设备、应用和/或服务(即,资源)的访问的终端用户的身份来控制对网络资源的访问。目录服务利用身份管理系统,该身份管理系统认证发起登入或登录以访问由该目录服务控制的资源的每个终端用户。
对终端用户的浏览器的浏览器扩展(即,浏览器附加组件(add-on)、插件(plug-in)等)被提供以促进终端用户的浏览器和目录服务之间的通信。浏览器扩展发起单一登入请求并且响应于登入过程的完成从目录服务接收浏览器cookie。浏览器cookie然后被设置在终端用户的浏览器中并且被用于对已登入的基于web的资源的随后的请求。
注意力现在转向用于安全的基于密码的登入的系统的更详细的描述。
转向图1,其示出了体现安全的基于密码的单一登入的示例性系统。系统100包括通过网络106通信地被耦合到目录服务104的一个或多个客户端设备102。在一个方面,目录服务104是云服务,其针对与组织和/或终端用户相关联的应用和资源提供访问控制和身份管理。目录服务104提供对多个基于云的软件即服务(SaaS)应用和/或预置(on-premise)应用的身份管理和单一登入。目录服务104可以由一个或多个服务器设备108组成。目录服务104的示例包括但不限于Azure活动目录、亚马逊Web服务、谷歌云平台等。
终端用户(即,客户、客户端、用户、开发者等)使用超文本传输协议(HTTP)通过分布式网络106(诸如互联网)与目录服务通信以用于访问一个或多个web应用。在本公开的一个方面,远程或基于web的认证端点被注册在终端用户的设备、应用、浏览器、服务或者被注册在本地目录服务系统。基于web的认证端点是将客户端设备102与目录服务104连接在一起的端口。端点是终端用户的设备、浏览器或者浏览器的扩展使用来访问目录服务104的统一资源定位符(URL)。
浏览器110具有促进与目录服务104的通信的目录登入组件112。目录登入组件112可以是扩展浏览器的功能性以与目录服务104交互的浏览器扩展、附加组件模块、插件模块等。目录登入组件112也使得浏览器110能够与被托管在第三方服务器或网站116上的一个或多个基于web的资源114(即,web应用、服务、设备等)交互。
目录服务104可以包括登入模块112、凭证保险库120、隔离执行环境122以及隔离执行模块124。登入模块112提供到终端用户被授权访问的一个或多个基于web的资源的单一登入。凭证保险库120安全地存储组织和/或终端用户的对由目录服务104控制的资源中的每个资源的凭证。
凭证保险库120存储加密的凭证。在本公开的一个方面,通过验证(verify)所提供的公钥证书或数字证书(例如,X.509公钥基础设施(PKI)证书)以使双方都确保另一方的身份,凭证保险库120和登入模块112彼此认证。数字证书由可信证书授权机构颁发。数字证书支持用于登入模块112和凭证保险库120之间的通信的安全的加密的信道,并且提供私钥/公钥对以由每一方使用。
登入模块112请求与具体目录用户标识符相关联的终端用户的、并且用于与具体URL相关联的基于web的资源的凭证。凭证保险库120响应于目录用户标识符以及URL的验证,取回被发送回到登入模块112的加密的凭证。登入模块112使用其自身的私钥来解密加密的凭证。
登入模块112从目录登入组件112接收访问基于web的资源的请求,并且生成用于终端用户的浏览器的登入脚本以用于登入预期的web应用或资源。可以用脚本语言(例如,JavaScript、HTML、ECMAScript、JSON等)、编程语言或其组合来编写登入脚本。登入脚本由目录登入组件112使用,以调用预期的资源的服务器、促进与预期的资源的服务器的用户会话、填充对预期的资源的登入过程中所需要的数据、对来自预期的资源的服务器的请求做出响应、处理错误条件、以及促进登入过程的成功操作。
隔离执行模块124创建隔离执行环境122,登入脚本在隔离执行环境122内使用凭证在目录服务104中安全地执行。通过验证所提供的公钥证书或数字证书(例如,X.509公钥基础设施(PKI)证书)以使双方都确保另一方的身份,隔离执行模块124与登入模块112使用互相认证过程交互。数字证书支持用于登入模块112和隔离执行模块124之间的通信的安全的加密的信道。
尽管图1在具体的配置中描绘了的系统和过程,应注意,本文中所公开的主题不被限制为图1所示的配置。例如,客户端设备102可以利用富客户端应用而不是浏览器来与目录服务交互。富客户端应用是计算设备上的应用,其从互联网取回数据而无需使用浏览器。
注意力现在转向利用本文中所公开的系统和设备的各种示例性方法的描述。可以参考各种示例性方法进一步描述针对各方面的操作。可以理解,除非另有指示,否则代表性方法不一定必须以所呈现的顺序或者以任何具体的顺序被执行。此外,可以以串行方式或并行方式、或者串行操作和并行操作的任何组合来执行关于方法所描述的各种活动。在一个或多个方面,方法图示了本文中所公开的系统和设备的操作。
转向图2A,其示出了安全的基于密码的单一登入的示例性方法200。终端用户最初使用目录用户标识符和/或密码204通过目录登入组件112登入到目录服务104(框202)。终端用户可以是在目录服务104具有账户的组织或企业的部分,其中账户可以被与同一组织中的其他终端用户共享。备选地,终端用户可以具有专用的账户。在任何配置中,一旦终端用户登入到目录服务104,到由目录服务104控制的资源的所有随后的访问就对终端用户是无缝的,并且不要求终端用户执行进一步的登入过程。
登入模块112接收登入请求并且验证该登入请求(框206),并且向终端用户的浏览器110提供用户的目录服务web主页208,用户的目录服务web主页208被显示给终端用户(框210)。在一个方面,目录服务104可以提供使得终端用户能够访问所有其基于web的资源的共同的web门户。终端用户可以从终端用户的浏览器发起对具体的基于web的资源的访问。目录登入组件112被注册在目录服务104的端点,由此使得浏览器110和目录服务104能够通信。
之后,终端用户可以请求对基于web的资源(诸如web应用)的访问,由此向web应用提示登入(框212)。终端用户的目录服务用户标识符以及web应用214的URL被提交给登入模块112(框212)。登入请求由登入模块112接收并且验证(框216)。一旦被验证,登入模块112就请求终端用户用于web应用的凭证(框218)。请求可以包括终端用户的目录用户标识符和web应用220的URL。
凭证224从凭证保险库120被获取,凭证224然后由登入模块112使用登入模块的私钥解密(框226)。登入模块112生成登入脚本,该登入脚本当被执行时将终端用户登入到web应用(框226)。登入脚本包括凭证。在一个方面,可以用脚本编程语言来实现登入脚本,诸如而不限于JavaScript、超文本标记语言(HTML)等。然而,登入脚本不限于任何具体类型的编程语言或者具体的编程语言。
接下来,登入模块112与隔离执行模块124通信以发起登入脚本234在其中被执行的隔离的执行环境122(框232)。存在各种类型的隔离的执行环境。容器是一种这样的隔离执行环境122,其提供在主机或虚拟机上运行的隔离的、资源受控的、可移植运行时环境。容器保持执行软件应用所需要的所有组件,诸如文件、库、依赖关系、环境变量等。容器执行映像(image),映像是软件应用的完整的、静态的并且可执行的版本。主机操作系统(OS)限制容器的对物理资源(诸如CPU、存储装置以及存储器)的访问。容器共享OS内核,其中OS的一个实例可以在许多隔离的容器中运行。支持容器的OS相比运行虚拟机(VM)或物理应用的OS可以更小、具有更少的特征。
存在不同类型的容器,其中每个容器类型具有不同的隔离要求。Windows服务器容器通过命名空间和过程隔离提供隔离。命名空间包含应用可以与之交互的所有资源,诸如文件、网络端口、以及正在运行的过程的列表。命名空间隔离允许主机给予每个容器仅包含其需要的资源的虚拟化的命名空间。使用该受限的视图,容器不能访问不被包含在其虚拟化的命名空间中的文件,而不管文件的权限为何,因为容器不能看见这些文件。应用不能与其察觉不到的应用对接。
Hyper-V容器是经优化的VM,其具有专用的OS内核。Hyper-V容器与Windows服务器容器不同,因为Hyper-V容器不与主机上的其他容器或者主机OS共享OS内核。Hyper-V容器与VM不同,因为其仅具有专用的OS内核并且不具有整个操作系统。
虚拟机与容器不同,因为VM在独立的环境中运行OS。VM要求大量的开销,因为VM具有其自身的OS文件、库、应用代码的副本连同OS的完整存储器中的(in-memory)实例。发起新的VM要求启动OS的另一个实例,即使主机或者现有的VM已经具有相同版本的正在运行的实例,并且要求将应用库加载到存储器中。在VM中运行的每个应用支付OS启动和其私有副本的存储器占用的成本,这限制了可以在主机上运行的VM的数目。
在本公开的一个方面,隔离执行模块124生成Hyper-V容器作为隔离执行环境122(框236)。Hyper-V容器包含登入脚本以及被用于执行该登入脚本的无头浏览器。无头浏览器是web浏览器,其不包含用户界面并且提供通过网络节点应用编程接口(API)或者命令行接口的对web页面的自动化的控制。无头浏览器的示例包括谷歌Chrome Puppeteer,无头模式中的火狐浏览器、PhantomJS等。
隔离执行环境122使用凭证在Hyper-V容器中执行登入脚本并且响应于成功的完成而接收浏览器cookie(框238)。浏览器cookie(即,web cookie、HTTP cookie、互联网cookie、cookie、认证cookie)是由网站发送并且保持针对网站的有状态(stateful)信息的数据。有状态信息可以指示浏览器先前已经在网站被认证并且不要求进一步的认证。在本公开的一个方面,浏览器cookie表示终端用户的浏览器在目标网站的认证状态(例如,已认证、未认证)。HTTP是无状态(stateless)通信协议并且浏览器cookie在终端用户的与网站的会话期间被使用,以便避免进一步的登入授权。浏览器cookie被用于辨别多个请求是否来自同一浏览器,由此保持终端用户被登入到网站。
响应于登入过程的完成,隔离执行模块124获取浏览器cookie(框214)。浏览器cookie 242然后被嵌入登入脚本中,并且通过目录登入组件112被返回给浏览器(框244)。在一个方面,浏览器cookie被用标志标记以在向客户端设备的传输期间确保其安全性。浏览器cookie可以包含指示传输是通过超文本传输安全协议(HTTPS)的“safe”标志,或者具有指示该cookie应当仅由网站访问的“HTTPOnly”标志。然而,应注意,本公开不限于这些技术,并且其他技术可以被采用。
转向图2B,目录登入组件112向web应用的网站发送HTTP请求254(框252),HTTP请求254由网站接收,该网站向目录登入组件112返回登入web页面258(框256)。目录登入组件112在终端用户的浏览器中设置浏览器cookie(框260)。目录登入组件112向网站发送具有cookie的HTTP请求264(框262),HTTP请求264由网站116接收。响应于HTTP请求264,网站116向目录登入组件112返回已登入web页面268(框266)。目录登入组件112然后指令浏览器110用已登入的web页面刷新其显示(框270)并且终端用户被登入到web应用(框272)。
注意力现在转向图3以及对示例性操作系统300的讨论。应注意,操作系统300是示例性的,并且不旨在建议任何关于实施例的功能性的限制。实施例可以被应用到操作系统300,操作系统300具有通过网络306被耦合到一个或多个服务器设备304的一个或多个客户端设备302。服务器设备304形成通过互联网按需可用的云服务。
客户端设备302以及服务器设备304可以是任何类型的电子设备,诸如但不限于移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持式计算机、服务器、服务器阵列或服务器群、web服务器、网络服务器、刀片服务器、互联网服务器、工作站、小型计算机、大型计算机、超级计算机、网络电器、web电器、分布式计算系统、多处理器系统、或者前述各项的组合。操作环境300可以被配置在网络环境、分布式环境、多处理器环境、或者具有对远程或本地存储设备的访问的独立计算设备中。
客户端设备302可以包括一个或多个处理器308、通信接口310、一个或多个存储设备312、存储器314以及一个或多个输入/输出(I/O)设备316。处理器308可以是任何市场上可获取的处理器,并且可以包括双微处理器和多处理器架构。通信接口310促进客户端设备302和其他设备之间的有线通信或无线通信。存储设备312可以是不包含传播的信号(诸如通过载波被传输的经调制的数据信号)的计算机可读介质。存储设备312的示例包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储装置、盒式磁带、磁带、磁盘存储装置,其中所有都不包含传播的信号(诸如通过载波被传输的已调制的数据信号)。输入/输出(I/O)设备316可以包括键盘、鼠标、笔、语音输入设备、触摸输入设备、显示器、扬声器、打印机等、以及前述各项的任何组合。
存储器314可以是可以存储可执行流程、应用以及数据的任何非暂态计算机可读存储介质。该计算机可读存储介质不属于被传播的信号(诸如通过载波被传输的经调制的数据信号)。其可以是不属于被传播的信号(诸如通过载波被传输的经调制的数据信号)的任何类型的非暂态存储器设备(例如,随机存取存储器、只读存储器等)、磁性存储装置、易失性存储装置、非易失性存储装置、光学存储装置、DVD、CD、软盘驱动等。存储器314也可包括一个或多个不属于被传播的信号(诸如通过载波被传输的经调制的数据信号)的一个或多个外部存储设备或者位于远程的存储设备。
存储器314可以包含指令、组件、模块以及数据。组件是执行特定功能的软件程序,并且除此以外也被称为模块、应用等。存储器314可以包括操作系统318、浏览器320、目录登入组件322、登入脚本324以及各种其他应用、组件和数据326。
如以上所描述的,服务器设备304也包括一个或多个处理器330、通信接口332、一个或多个存储设备334、I/O设备336以及存储器338。存储器338可以包括操作系统340、登入模块342、凭证保险库344、登入脚本生成模块346、隔离执行模块348、隔离执行环境350、登入脚本352、容器354以及其他应用程序和数据356。
网络306可以采用各种有线和/或无线通信协议和/或技术。可以由网络采用的各代不同通信协议和/或技术可以包括但不限于全球移动通信系统(GSM)、通用分组无线服务(GPRS)、增强型数据GSM环境(EDGE)、码分多址(CDMA)、宽带码分多址(W-CDMA)、码分多址2000(CDMA-2000)、高速下行链路分组接入(HSDPA)、长期演进(LTE)、通用移动电信系统(UMTS)、演进数据优化(Ev-DO)、全球微波接入互操作性(WiMax)、时分多址(TDMA)、正交频分复用(OFDM)、超宽带(UWB)、无线应用协议(WAP)、用户数据报协议(UDP)、传输控制协议/互联网协议(TCP/IP)、开放系统互连(OSI)模型协议的任何部分、会话发起协议/实时传输协议(SIP/RTP)、短消息服务(SMS)、多媒体消息服务(MMS)或者任何其他通信协议和/或技术。
所公开的主题的各方面涉及以下技术问题:在不向客户端设备传递凭证的情况下,执行到由目录服务控制的基于web的资源的安全的基于密码的登入。与解决该问题相关联的技术特征涉及使用与客户端设备分离的服务器上的无头浏览器在安全的容器(诸如隔离执行环境)中执行登入脚本。登入脚本包括登入到基于web的资源所需要的凭证。安全的容器确保凭证对客户端设备是不可见的,并且不是向客户端设备的任何网络传输的部分。从登入脚本的执行被返回的浏览器cookie被返回到客户端设备。终端用户浏览器使用浏览器cookie执行登入脚本以获取对基于web的资源的访问。以这种方式,技术效果被达成,其提供了不能由客户端设备阻碍或者通过与客户端设备的网络通信被阻碍的安全的单一登入过程。另外,通过提供更安全的单一登入来防止恶意的用户访问在目录服务控制下的未经授权的基于web的资源的技术效果由目录服务达成。
公开了一种系统,该系统包括至少一个处理器以及被耦合到该至少一个处理器的存储器。该至少一个处理器被配置为:在目录服务处生成第一登入脚本,以提供对基于web的远程资源的终端用户经认证的访问,第一登入脚本包括与基于web的远程资源以及终端用户相关联的密码,目录服务控制对基于web的远程资源的终端用户的认证,在目录服务中,在与终端用户设备分离的隔离执行环境中执行第一登入脚本,从第一登入脚本的执行获取认证状态,并且向终端用户设备返回认证状态。
该系统还被配置为在被传输向终端用户设备的第二登入脚本中嵌入认证状态,以及从目录服务的凭证保险库获取用于基于web的远程资源的终端用户的密码。隔离执行环境包括具有专用的OS内核的容器。第一登入脚本执行到基于web的远程资源的单一登入。密码不被包括在第二登入脚本中。使用无头浏览器,第一登入脚本在隔离执行环境中被执行。认证状态是浏览器cookie。
公开了一种设备,该设备具有被耦合到存储器的至少一个处理器、浏览器以及浏览器扩展。浏览器包括用于显示一个或多个web页面的指令。浏览器扩展包括指令,该指令当在至少一个处理器上被执行时执行以下动作:向目录服务提交用于到基于web的资源的单一登入认证的至少一个HTTP请求,其中该目录服务使用用户凭证来认证对基于web的资源的访问;从目录服务接收浏览器cookie,该浏览器cookie表示从基于web的资源获取的认证状态;在浏览器中设置浏览器cookie;并且在一个或多个HTTP请求中传输浏览器cookie以获取对基于web的资源的访问,其中该一个或多个HTTP请求不具有用户凭证并且无需用户干预。
浏览器cookie在来自目录服务的登入脚本中被获取。浏览器扩展包括指令,该指令当由至少一个处理器执行时包括以下动作:使用不具有用户凭证的浏览器cookie生成登入到基于web的资源的HTTP请求,使用不具有用户凭证的登入脚本来登入到基于web的资源,并且指令浏览器使用来自基于web的资源的已登入web页面刷新当前显示。用户凭证包括密码。
一种在系统和设备上被执行的方法包括:托管目录服务以执行到一个或多个基于web的资源的单一登入,其中该目录服务控制对一个或多个基于web的资源的认证,存储与对一个或多个基于web的资源的访问相关联的一个或多个凭证,在目录服务中代表第一终端用户在隔离执行环境中执行到第一基于web的资源的登入,登入包括与第一终端用户相关联的凭证,从登入的执行获取浏览器cookie,并且使得第一终端用户能够通过对浏览器cookie的访问而登入到第一基于web的资源。
该方法还包括:除了生成包括与第一基于web的资源以及第一终端用户相关联的凭证的第一登入脚本之外,在目录服务中使用Hyper-V容器配置隔离执行环境,并且在隔离执行环境中执行第一登入脚本。该方法还包括从第一登入脚本的执行接收浏览器cookie,生成包括浏览器cookie的第二登入脚本以支持对第一基于web的资源的第一终端用户访问,第二登入脚本没有凭证,向终端用户设备传输第二登录脚本,以用于由终端用户设备的浏览器使用,以获取第一基于web的资源的已登入web页面。
尽管已经用特定于结构化特征和/或方法动作的语言描述了主题,但是应理解,所附权利要求书中所限定的主题不必限于以上所描述的特定特征或动作。相反,以上所描述的特定的特征和动作实现权利要求的示例形式被公开。
- 安全的基于密码的单一登入
- 单一登入管理方法及系统