SSO解决方案大全SingleSignOnforeveryone

合集下载

单点登录实现方案

单点登录实现方案

单点登录实现方案单点登录(Single Sign-On, 简称SSO)是一种用于企业内部系统和网络服务的身份验证解决方案。

它允许用户只需一次登录就能够访问多个相关的应用程序,提供了便捷和安全性。

本文将介绍几种常见的单点登录实现方案,探讨其优点和适用场景。

一、基于身份提供者的单点登录基于身份提供者的单点登录是一种常见的实现方案。

在这种方案中,用户只需通过一次身份验证就能够访问多个应用程序。

身份提供者在用户登录后生成一个令牌(Token),并将其发送给相关应用程序。

这样,用户在访问其他应用程序时只需将该令牌发送给应用程序,应用程序将验证该令牌的有效性,并授权用户访问相关资源。

优点:这种方案简化了用户的登录流程,提高了用户体验。

同时,身份提供者可以集中管理用户身份和权限,增强了安全性。

适用场景:该方案适用于企业内部网络和应用系统。

比如,一个企业内部拥有多个应用系统,员工只需通过一次登录就能够访问这些应用系统,方便了企业内部的业务流程。

二、基于代理服务器的单点登录基于代理服务器的单点登录是另一种常见的实现方案。

在这种方案中,代理服务器作为用户和应用程序之间的中间层,负责用户的身份验证和授权。

当用户访问一个应用程序时,代理服务器会首先验证用户的身份,并为用户生成一个令牌。

然后,代理服务器将令牌发送给应用程序,应用程序通过验证令牌来判断用户的身份和权限。

优点:这种方案可以灵活适应不同的应用程序和网络环境。

代理服务器可以根据不同的业务需求进行扩展和定制,提供更好的灵活性和安全性。

适用场景:该方案适用于企业内外网结合的环境。

企业可以在内部网络搭建代理服务器,实现对内外网应用程序的统一管理和安全控制。

三、基于标准协议的单点登录基于标准协议的单点登录是一种开放式的实现方案。

在这种方案中,使用标准协议来实现不同系统之间的认证和授权。

常见的标准协议包括OAuth和OpenID Connect等。

用户通过登录认证服务器后,认证服务器会生成一个授权码,再通过用户的许可,将授权码发送给应用程序。

单点登录方案

单点登录方案

单点登录方案单点登录(Single Sign-On, SSO)是一种集中式身份验证解决方案,旨在增加用户体验、提高安全性和简化身份验证过程。

在不同的应用程序和系统中,用户只需通过一次登录即可访问多个应用,不需要为每个应用程序都输入用户名和密码。

一个有效的单点登录方案应该具备以下特点:安全性、用户友好性、易于集成和兼容性。

接下来,我将探讨一些常见的单点登录方案,以及它们的优点和缺点。

一、基于SAML的单点登录方案Security Assertion Markup Language (SAML) 是一个基于XML的开放标准,用于在不同的域中安全传输身份验证和授权数据。

基于SAML的单点登录方案具有很高的安全性,用户只需通过一次登录即可在各个关联的应用程序中进行身份验证和授权。

此外,SAML还支持跨不同域的身份提供者之间的身份验证。

然而,SAML方案的集成和配置通常具有较高的复杂性,需要额外的硬件和软件成本。

二、基于OAuth的单点登录方案OAuth是一种开放标准,用于访问互联网用户帐号的代理授权。

基于OAuth的单点登录方案允许用户使用其社交媒体帐号(如Facebook、Google、Twitter等)登录其他应用程序。

这种方式对用户友好,通过使用现有的用户帐号,可以减少用户需要记住的用户名和密码数量。

然而,OAuth方案对于敏感应用程序可能存在安全风险,因为用户的社交媒体帐号可能已经被黑客攻击。

三、基于OpenID Connect的单点登录方案OpenID Connect是基于OAuth 2.0的认证和授权协议。

与OAuth类似,OpenID Connect允许用户使用其现有的互联网身份提供者帐号进行身份验证。

与OAuth不同的是,OpenID Connect提供了一个身份层,允许应用程序获取有关用户身份的更详细的信息。

OpenID Connect方案是一种适用于企业和互联网应用程序的灵活性很高的单点登录方案。

sso改造方案

sso改造方案

sso改造方案
SSO(Single Sign-On),即单点登录,可以实现用户在一个系统中登录后,无需再次登录即可访问所有相互信任的应用系统,大大提高了用户的使用体验和系统的易用性。

为了实现SSO,可以考虑以下改造方案:
1. 根据需求选择合适的SSO技术。

SSO技术有JWT、CAS、Oauth2和SAML等,每种技术的开发集成难度和安全程度都有所不同。

一般来说,在满足业务需求的情况下,优先选择集成开发简单的技术,推荐顺序为JWT、CAS、Oauth2、SAML。

2. 对现有的应用系统进行改造。

在应用系统中增加SSO功能,使得用户只需要登录一次就可以访问所有应用系统,而不需要多次登录。

对于跨域问题,可以通过将Cookie的域设置为顶域,并将ST作为参数进行传递来解决。

3. 使用身份提供商来实现SSO。

身份提供商(IdP)是一个专门的SSO 服务提供商,可以为用户提供单点登录的服务。

通过将SSO和UAM系统结合,可以集中管理用户身份,节省时间和金钱。

4. 确保改造后的系统具有灵活的配置和可定制化的用户界面。

在改造过程中,注意到了静态资源地址变更可能引发的问题,需要进行相应的修改。

综上所述,实施SSO改造方案需要结合业务需求、技术选择、应用系统改造和安全性等多方面因素考虑,以达到提高安全性和易用性的目标。

单点登陆解决方案

单点登陆解决方案

单点登陆解决方案
《单点登陆解决方案》
单点登陆(Single Sign-On, 简称SSO)是一种用户只需一次登陆,就可以访问多个应用系统的登陆方式。

在企业信息系统中,为了方便用户管理和提高工作效率,采用SSO解决方案已经
成为一种常见的选择。

SSO解决方案的基本原理是通过一个认证中心统一管理用户
的登陆信息,用户在任何一个系统登陆之后,就可以自动获得访问其他系统的权限。

这样一来,用户无需为每个系统分别登陆,大大降低了登陆的繁琐程度,提高了用户的使用体验。

为了实现SSO解决方案,企业通常会选择一些成熟的SSO产
品或者服务,比如常见的PingFederate、Auth0等。

这些产品
一般可以通过配置对接企业内部的用户库或者外部的认证服务,实现用户信息的同步和认证策略的设置。

同时,这些产品还可以提供一些额外的功能,比如多因素认证、访问控制、审计等,帮助企业更好地管理用户的访问权限。

当然,实现SSO解决方案并不是一件简单的事情。

企业在选
择和部署SSO产品时需要考虑到自身的业务需求和IT架构,
以及产品的性能和安全性等方面的问题。

同时,SSO解决方
案还需要和企业原有的系统进行对接,可能会涉及到一些定制开发和集成工作。

总的来说,SSO解决方案对于提高企业的效率和用户体验有
着重要的意义。

在企业信息系统中,采用SSO解决方案可以有效地简化用户的登陆流程,提高用户的工作效率,降低企业的IT管理成本,是一种非常值得推广的解决方案。

单点登陆解决方案

单点登陆解决方案

单点登陆解决方案<i>随着信息技术和网络技术在组织机构中的广泛应用,很多机构单位已经拥有了各种各样的应用系统,如OA办公自动化系统、HR 人力资源管理系统、财务系统、CRM客户关系管理系统、企业ERP系统、政府网上审批系统、学校一卡通系统、以及各种业务应用系统。

但用户要想享受到这些应用系统带来的诸多好处,就需要登录到许多不同的应用系统中,而每个系统都要求用户遵循其独立的身份认证安全策略,比如要求输入用户ID和口令。

用户所使用的应用</i> 单点登录解决方案随着信息技术和网络技术在组织机构中的广泛应用,很多机构单位已经拥有了各种各样的应用系统,如OA办公自动化系统、HR人力资源管理系统、财务系统、CRM客户关系管理系统、企业ERP系统、政府网上审批系统、学校一卡通系统、以及各种业务应用系统。

但用户要想享受到这些应用系统带来的诸多好处,就需要登录到许多不同的应用系统中,而每个系统都要求用户遵循其独立的身份认证安全策略,比如要求输入用户ID和口令。

用户所使用的应用系统越多,登录时出错的可能性就会越大,受到非法截获和破坏的可能性也会大大增加,系统的安全性就会相应降低;而如果用户忘记了口令,不能正确的登录系统,就需要请求管理员的帮助,而且只能在重新获得口令之前等待,造成了系统和安全管理资源的不必要的开销,降低了系统的使用效率。

有时,用户为避免这种尴尬情况的出现,也为记清楚登录信息,通常会采用简化用户名、密码,或者在多个系统中使用相同的口令,或者干脆将密码记录在笔记本上的做法,而这些都是会危及企业信息安全的几种不良的习惯。

此外,通常情况下,各个应用系统都存在自己独立的用户信息数据库和授权管理机制,故而如何实现中央用户目录数据、门户用户数据与各应用系统用户数据之间的用户数据同步和登录帐号/密码的对照,也是信息化建设面临的重要挑战之一。

正是基于上述安全风险和挑战,门户平台CenGRP提供了一站式单点登录(SSO,Single Sign-On)功能,即通过用户的一次性鉴别登录,可获得需访问系统和应用软件的授权,在此条件下,用户可对所有被授权的各类信息资源进行无缝的访问,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制,实现“一次登录、随处访问/全网漫游”;从而提高用户的工作效率,减少操作时间,降低用户安全管理的复杂度,并提高信息系统整体的安全性。

单点登录解决方案

单点登录解决方案

单点登录解决方案引言随着互联网的快速发展,单点登录(Single Sign-On,SSO)已经成为各种网络应用中的常见需求。

单点登录指的是用户只需通过一次身份验证,即可在多个应用中访问和使用资源,而无需再次输入用户名和密码。

这大大提高了用户的使用体验,减轻了用户的负担。

本文将介绍单点登录的基本原理以及实现单点登录的常见解决方案。

基本原理单点登录的基本原理包括三个主要组成部分:身份提供者、服务提供者和用户。

身份提供者是负责用户身份验证和授权的服务,通常是一个独立的认证系统,如LDAP、Active Directory等。

服务提供者是各个应用系统,它们依赖于身份提供者来验证用户身份和授权。

用户是最终需要访问各个应用系统的个体。

在单点登录的过程中,当用户访问一个需要身份验证的应用系统时,该系统会将用户重定向到身份提供者进行身份验证。

一旦验证成功,身份提供者将生成一个令牌(Token),并将用户重定向回原始应用系统。

应用系统使用该令牌进行身份验证和授权,从而免除用户在每个应用系统中重复登录的繁琐过程。

解决方案1. 基于代理服务器的单点登录基于代理服务器的单点登录是一种简单且传统的解决方案。

该方案将所有应用系统的流量通过一个代理服务器进行转发,该代理服务器负责身份验证和授权。

用户在访问应用系统之前,需要先登录到代理服务器。

代理服务器通过验证用户的身份后,将用户请求转发到对应的应用系统,并将验证信息添加到请求中。

这种解决方案的优点是简单易用,无需对应用系统进行任何修改。

但是同时也存在一些限制,如需要单独设置代理服务器、影响网络性能等。

2. 基于令牌的单点登录基于令牌的单点登录方案将用户身份信息存储在令牌中,令牌在各个应用系统之间进行传递和验证。

当用户登录成功后,身份提供者会生成一个令牌,并将其返回给用户。

用户在访问其他应用系统时,将该令牌带上并提交到应用系统中进行验证。

这种解决方案的优点是实现相对较为简单,使用方便。

统一认证单点登录系统SSO解决方案

统一认证单点登录系统SSO解决方案

统一认证单点登录系统SSO解决方案单点登录(SSO)是一种身份认证技术,允许用户通过一次登录,获得访问多个相关系统的权限,而无需重新输入登录凭证。

统一认证单点登录系统(SSO)解决方案是一种集成和授权机制,为用户提供单一的身份验证机制,使其能够快速、方便地访问各种不同的应用程序和系统。

在传统的登录方式中,用户通常需要为每个应用程序和系统拥有一个独立的账号,并需要输入每个应用程序或系统的登录凭证。

这对于用户来说非常繁琐,也容易导致账号和密码的管理困难。

单点登录解决方案通过集成和授权机制,解决了这个问题,并为用户提供了一种更便捷和高效的身份验证方式。

1. 身份提供者(Identity Provider,IdP):身份提供者是SSO系统的核心组件,负责用户身份的认证和授权。

用户通过身份提供者进行登录,并获得生成和管理身份凭证的权限。

2. 服务提供者(Service Provider,SP):服务提供者是SSO系统中的应用程序或系统,它依赖于身份提供者来验证和授权用户的身份。

用户只需在身份提供者处登录一次,即可无需重新输入登录凭证,访问多个服务提供者。

3. 身份凭证(Credentials):身份凭证是由身份提供者生成,以验证用户身份的信息。

它可以是用户名和密码的组合,也可以是使用其他身份验证方式生成的令牌或证书。

4. 单点登录协议:单点登录解决方案使用不同的协议来实现身份验证和授权。

常见的协议包括SAML(Security Assertion MarkupLanguage)、OpenID Connect、OAuth等。

这些协议定义了身份提供者和服务提供者之间的通信规范,以确保安全可靠地传输身份凭证和用户信息。

单点登录解决方案的具体实现步骤如下:1.用户访问服务提供者(SP)应用程序,并被要求进行身份验证。

2.SP应用程序将用户重定向到身份提供者(IdP)登录页面。

3.用户在IdP登录页面上输入其凭据(用户名和密码)。

单点登录SSO系统解决方案

单点登录SSO系统解决方案

单点登录SSO系统解决方案***有限公司20文档信息版本历史目录1.概述 (5)1.1.背景 (5)1.2.目标 (5)1.3.阅读对象 (5)1.4.术语和缩略语 (5)2.SSO概述 (6)2.1.SSO规范 (6)2.1.1.名称解释 (6)3.SSO接口规范 (7)3.1.SSO接口图 (7)3.2.SSO接口清单 (7)3.3.单点登录接口 (8)3.3.1.登录 (8)3.3.2.登录状态检查 (10)3.3.3.用户信息获取 (11)3.3.4.登录状态查询 (12)3.3.5.单点登录使用场景 (12)3.4.组织数据WS同步 (13)3.4.1.接口说明 (13)3.4.2.使用场景 (13)3.4.3.字段说明 (13)3.4.4.业务规则和逻辑 (14)3.5.用户数据WS同步 (15)3.5.1.接口说明 (15)3.5.2.使用场景 (15)3.5.3.字段说明 (15)3.5.4.业务规则和逻辑 (16)4.实施建议 (17)4.1.SSO实施(基本认证) (17)4.1.1.接入流程 (17)4.1.2.接入准备 (18)4.1.3.接收数据 (18)4.1.4.登录状态检查方法 (18)4.1.5.登录/检查登录状态成功—主体代码(Success URL)编写 (18)4.1.6.登录失败处理 (19)4.1.7.状态检查未登录处理 (19)4.2.组织和用户接收 (19)4.2.1.开发框架 (19)4.2.2.开发过程 (19)5.附录 (20)5.1.SSO E RROR C ODE (20)5.2.SSO T OKEN XML (20)5.3.SSO用户信息 (20)5.4.SSO获取用户信息失败的状态码 (20)1.概述1.1.背景***有限公司目前有N个应用系统,每个应用系统都具有自己的身份验证机制,这样势必造成:生活中的一位用户,在每个应用系统都有一个用户帐号和密码,如果要登录某个应用系统,必须通过该应用系统身份验证,验证通过后才能访问该应用系统;即使用户在所有应用系统上使用同样的用户名和密码,虽然可以在避免用户名和密码忘记和混淆方面有一定的作用,但是用户在某一段时间访问多个应用系统或在不同应用系统间跳转时,还是需要用户登录后,才能以有效的身份访问应用系统。

SSO(单点登录)实现方案

SSO(单点登录)实现方案

SSO(单点登录)实现⽅案⼀、单点登录概述单点登录的英⽂名称为Single Sign-On,简写为SSO,它是⼀个⽤户认证的过程,允许⽤户⼀次性进⾏认证之后,就访问系统中不同的应⽤;⽽不需要访问每个应⽤时,都重新输⼊密码。

IBM对SSO有⼀个形象的解释“单点登录、全⽹漫游”。

SSO将⼀个企业内部所有域中的⽤户登录和⽤户帐号管理集中到⼀起,SSO的好处显⽽易见:1. 减少⽤户在不同系统中登录耗费的时间,减少⽤户登录出错的可能性2. 实现安全的同时避免了处理和保存多套系统⽤户的认证信息3. 减少了系统管理员增加、删除⽤户和修改⽤户权限的时间4. 增加了安全性:系统管理员有了更好的⽅法管理⽤户,包括可以通过直接禁⽌和删除⽤户来取消该⽤户对所有系统资源的访问权限缺点:1.不利于重构因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时。

2. ⽆⼈看守桌⾯因为只需要登录⼀次,所有的授权的应⽤系统都可以访问,可能导致⼀些很重要的信息泄露⼆、单点登录的实现⽅案1.流程图a、词汇解释1.Service Ticket:进⼊每个客户端的凭证(是唯⼀不重复的)。

2.Ticket Granted Cookie:全局唯⼀凭证(以cookie的形式存储),之所以能从⼀个系统跳转到列⼀个系统不⽤再次登录,全凭它。

b、流程说明①⽤户通过终端访问客户端。

②客户端带着重定向地址(redirect_uri:为各⾃客户端当前页⾯地址[需要编码,防⽌有特殊字符])到验证中⼼登录页验证(没有登录情况下)。

③验证成功⽣成Ticket Granted Cookie和Service Tikcet并存储(为后⾯验证做准备)。

④同时通过url传参的⽅式(redirect_uri?ticket=Service Tikcet)重定向到客户端并为终端游览器设置Ticket Granted Cookie。

⑤客户端获得了Service Ticket,然后到验证中⼼验证。

用户单点登录解决方案

用户单点登录解决方案

统一顾客认证和单点登录处理方案本文以某新闻单位多媒体数据库系统为例,提出建立企业顾客认证中心,实现基于安全方略旳统一顾客管理、认证和单点登录,处理顾客在同步使用多种应用系统时所碰到旳反复登录问题。

伴随信息技术和网络技术旳迅猛发展,企业内部旳应用系统越来越多。

例如在媒体行业,常见旳应用系统就有采编系统、排版系统、印刷系统、广告管理系统、财务系统、办公自动化系统、决策支持系统、客户关系管理系统和网站公布系统等。

由于这些系统互相独立,顾客在使用每个应用系统之前都必须按摄影应旳系统身份进行登录,为此顾客必须记住每一种系统旳顾客名和密码,这给顾客带来了不少麻烦。

尤其是伴随系统旳增多,出错旳也许性就会增长,受到非法截获和破坏旳也许性也会增大,安全性就会对应减少。

针对于这种状况,统一顾客认证、单点登录等概念应运而生,同步不停地被应用到企业应用系统中。

统一顾客管理旳基本原理一般来说,每个应用系统都拥有独立旳顾客信息管理功能,顾客信息旳格式、命名与存储方式也多种多样。

当顾客需要使用多种应用系统时就会带来顾客信息同步问题。

顾客信息同步会增长系统旳复杂性,增长管理旳成本。

多大飞例如,顾客X需要同步使用A系统与B系统,就必须在A系统与B系统中都创立顾客X,这样在A、B任一系统中顾客X旳信息更改后就必须同步至另一系统。

假如顾客X需要同步使用10个应用系统,顾客信息在任何一种系统中做出更改后就必须同步至其他9个系统。

顾客同步时假如系统出现意外,还要保证数据旳完整性,因而同步顾客旳程序也许会非常复杂。

处理顾客同步问题旳主线措施是建立统一顾客管理系统(UUMS)。

UUMS统一存储所有应用系统旳顾客信息,应用系统对顾客旳有关操作所有通过UUMS完毕,而授权等操作则由各应用系统完毕,即统一存储、分布授权。

UUMS应具有如下基本功能:1.顾客信息规范命名、统一存储,顾客ID全局惟一。

顾客ID如同身份证,辨别和标识了不一样旳个体。

2.UUMS向各应用系统提供顾客属性列表,如姓名、电话、地址、邮件等属性,各应用系统可以选择本系统所需要旳部分或所有属性。

单点登录 解决方案

单点登录 解决方案

单点登录解决方案1. 简介随着互联网应用的快速发展,用户对于便捷的登录方式提出了更高的要求。

为了解决用户面临的繁琐的多次登录问题,单点登录(SSO)应运而生。

单点登录是一种身份验证方式,允许用户在多个应用系统中使用同一组凭据(例如用户名和密码)进行登录,从而实现一次登录即可在多个应用系统中访问资源的目的。

在本文中,我们将介绍单点登录的工作原理和常用的解决方案,以及其中的一些实施细节。

2. 工作原理单点登录的核心思想是用户只需要登录一次,就可以在多个应用系统中进行访问。

其工作原理如下:•用户访问第一个应用系统(通常称为身份提供者)并输入凭据进行登录。

•身份提供者验证用户的凭据,并颁发一个令牌。

•用户访问其他应用系统时,令牌会被传递给每个应用系统。

•每个应用系统使用这个令牌来验证用户的身份,并授权其访问该应用系统的资源。

通过这种方式,用户可以在不需要多次输入登录凭据的情况下,方便地访问多个应用系统。

3. 常用解决方案下面介绍几种常见的单点登录解决方案。

3.1 基于Cookie的单点登录基于Cookie的单点登录是最简单和最常见的解决方案之一。

其工作原理如下:1.用户登录第一个应用系统后,该系统会将用户信息加密并存储在一个Cookie中。

2.用户访问其他应用系统时,该系统会验证Cookie并提取用户信息。

3.如果验证通过,用户将被授权访问该应用系统的资源。

优点: - 简单易行,适用于大多数Web应用。

- 无需修改现有的用户数据库。

缺点: - 存在Cookie劫持的风险。

- 无法支持跨域访问。

3.2 基于Token的单点登录基于Token的单点登录是一种更安全和灵活的解决方案。

其工作原理如下:1.用户登录第一个应用系统后,该系统会颁发一个Token给用户。

2.用户在访问其他应用系统时,会将Token附加在请求中。

3.每个应用系统通过验证Token来确认用户的身份,并授权其访问该系统的资源。

优点: - 提供更高的安全性,因为Token是加密的。

用户单点登录解决方案

用户单点登录解决方案

用户单点登录解决方案用户单点登录(SSO)是指用户只需登录一次,即可访问多个相关的系统。

这种解决方案适用于企业内部的各个系统之间或不同企业间的系统之间。

用户无需输入多次用户名和密码,可以方便地在系统间切换,并且能够提高用户体验和工作效率。

下面将介绍用户单点登录解决方案以及其优势和实施步骤。

1. 认证中心(Authentication Service):认证中心是用户登录验证的核心组件,负责验证用户的身份和生成访问令牌。

用户在认证中心进行登录后,会生成一个访问令牌,并将其返回给用户。

2. 单点登录代理(SSO Agent):单点登录代理是位于各个系统和认证中心之间的组件,负责在用户访问各个系统前验证访问令牌的有效性。

当用户访问一个需要登录的系统时,该系统会将用户的访问令牌发送给单点登录代理进行验证。

3. 用户信息库(User Database):用户信息库存储了用户的信息,包括用户名、密码、权限等。

认证中心和各个系统都可以通过访问用户信息库获取用户信息。

1.提高用户体验:用户只需登录一次,即可方便地切换系统,不需要在每个系统中都输入用户名和密码,提高了用户的使用便捷性和体验。

2.提高工作效率:用户单点登录可以减少用户因为频繁登录而浪费的时间,提高了工作效率。

3.统一安全管理:通过用户单点登录方案,企业可以更好地管理用户的权限和安全策略,减少安全漏洞的风险。

1.确定需要单点登录的系统范围:确定需要实施单点登录的系统范围,包括企业内部的各个系统或与其他企业间的系统。

2.设计认证中心:设计一个认证中心,用于验证用户的身份和生成访问令牌。

该认证中心应该包含用户信息库和实现认证逻辑的代码。

3.配置单点登录代理:将单点登录代理部署到各个系统中,用于验证访问令牌的有效性。

配置单点登录代理时,需要指定认证中心的地址和相关参数。

4.集成认证中心和系统:将认证中心和各个系统进行集成,包括认证中心和用户信息库的集成、认证中心和单点登录代理的集成,以及系统和单点登录代理的集成。

c 单点登录解决方案

c 单点登录解决方案

c 单点登录解决方案
《C单点登录解决方案》
单点登录(Single Sign-On, 简称SSO)是一个让用户在多个应用程序中只需登入一次,即可访问所有应用程序的解决方案。

对于C语言开发者来说,实现一个C单点登录解决方案是非常重要的。

在这篇文章中,我们将探讨一些常见的C单点登录解决方案,并分析它们的优缺点。

一种常见的C单点登录解决方案是基于HTTP认证的。

这种方案通过在HTTP请求头中发送认证信息,实现用户在不同的应用程序中共享认证状态。

但是,这种解决方案的安全性并不是很高,容易受到中间人攻击等问题。

另一种C单点登录解决方案是基于OAuth 2.0协议的。

OAuth 2.0协议是一种授权框架,其中包含了一系列授权认证方法。

它通过令牌(Token)的颁发来实现单点登录。

使用这种解决方案可以实现更加安全的单点登录体验,但也需要开发者对OAuth 2.0协议有深入的了解。

除了以上两种解决方案,C开发者也可以考虑使用第三方的单点登录解决方案,比如Shibboleth、CAS等。

这些解决方案已经在一些大型企业或教育机构中得到了应用,并且有成熟的支持和文档。

在选择C单点登录解决方案时,开发者需要考虑安全性、易用性以及系统适配性等因素。

同时,也需要根据自身的项目需
求来选择一个适合的解决方案。

希望本文介绍的内容能够为C 开发者在实现单点登录方面提供一些帮助。

单点登录实现方案

单点登录实现方案

单点登录实现方案简介单点登录(Single Sign-On,简称 SSO)是一种允许用户使用一组凭据(例如用户名和密码)登录多个相关但独立的应用程序或系统的身份认证机制。

在传统的身份验证方式中,用户需要为每个应用程序或系统输入不同的身份验证信息,这导致了用户体验的不便和管理的困难。

通过实现单点登录,用户只需要在一处登录后即可访问所有相关的应用程序或系统,提高了用户的便利性和工作效率。

本文将介绍一种基于令牌(Token)的单点登录实现方案,采用 OAuth 2.0 和OpenID Connect 协议来实现身份认证与授权。

方案概述1.用户通过认证服务器进行身份认证。

2.认证服务器颁发令牌给用户。

3.用户携带令牌访问相关应用程序或系统。

OAuth 2.0OAuth 2.0 是一种开放授权协议,用于授权第三方应用程序访问用户在某个服务提供商上存储的资源。

在单点登录中,OAuth 2.0 充当了认证服务器的角色。

认证服务器获取用户的用户名和密码,验证其身份后,颁发访问令牌给用户。

访问令牌包含了用户授权的权限信息,并具有一定的有效期。

OpenID ConnectOpenID Connect 是建立在 OAuth 2.0 协议之上的身份验证协议,提供了用于身份验证和用户信息获取的规范。

在单点登录中,OpenID Connect 充当了身份提供商的角色。

一旦用户通过 OAuth 2.0 的流程进行身份认证并获得访问令牌,OpenID Connect 标识提供者将根据令牌中携带的用户ID等信息,向应用程序或系统提供有关用户的身份验证和授权信息。

单点登录流程图graph TDA[用户] -->|1. 请求登录| B[认证服务器]B -->|2. 请求授权| C[用户同意授权]C -->|3. 颁发令牌| BB -->|4. 颁发令牌| AA -->|5. 携带令牌| D[应用程序/系统]D -->|6. 验证令牌| BB -->|7. 验证令牌| D具体实现1. 配置认证服务器首先,我们需要配置一个认证服务器,用于处理用户的身份认证请求。

单点登录设计方案

单点登录设计方案

单点登录设计方案单点登录(Single Sign-On, SSO)是一种身份认证技术,允许用户使用一个集中的认证系统登录多个相关但独立的应用系统。

下面是一个针对单点登录的设计方案:1.集中认证服务:设计一个集中的认证服务,负责接收用户的登录请求,并验证用户的身份。

该认证服务可以由一个独立的认证服务器来实现。

认证服务需要存储用户的认证信息,如用户名,密码等。

2.认证服务与应用系统的集成:为了实现单点登录,需要将认证服务与各个应用系统进行集成。

可以在每个应用系统中添加一个登录页面,用户在输入用户名和密码后,登录请求被发送至认证服务进行身份验证。

认证服务返回认证结果,如果成功,用户可以访问应用系统;如果失败,用户需要重新输入用户名和密码。

3.统一登录凭证:为了简化用户的登录流程,可以引入统一登录凭证(Token)的概念。

用户在登录成功后,认证服务可以生成一个唯一的Token,将其返回给用户。

用户在访问其他应用系统时,可以使用该Token进行认证,而无需重新输入用户名和密码。

Token可以包含用户的身份信息和时间戳等,以增加安全性。

4.应用系统与认证服务的信任关系:为了确保认证服务只向信任的应用系统提供服务,可以在认证服务和应用系统之间建立信任关系。

可以使用加密算法对认证请求和返回结果进行加密和签名,以确保请求的来源和结果的完整性。

5.自动登录:为了提高用户体验,可以在用户第一次登录成功后,在用户的终端设备上保存Token。

下次用户访问应用系统时,可以自动使用保存的Token进行登录,而无需再次输入用户名和密码。

这需要提供注销功能,以用于用户登出或更换终端设备。

6.单点注销:在单点登录的设计中,需要考虑用户退出和注销的问题。

用户在一个应用系统登出后,认证服务需要通知其他应用系统,使其也能将用户注销。

可以使用发布-订阅模型来实现这个功能。

总之,单点登录设计方案包括集中认证服务、统一登录凭证、应用系统与认证服务的信任关系、自动登录和单点注销等功能。

单点登录 解决方案

单点登录 解决方案

单点登录解决方案
《单点登录:解决企业多系统登录难题的最佳方案》
在企业信息化发展的趋势下,企业内部往往会存在着多个不同的系统,如人力资源系统、财务系统、客户关系管理系统等。

每个系统都需要员工使用单独的用户名和密码进行登录,这给员工工作带来了不便,也增加了安全风险。

为了解决这一难题,单点登录(Single Sign-On,SSO)成为了企业解决多系统登
录问题的最佳方案。

单点登录是一种身份验证技术,允许用户只输入一次用户名和密码就可以访问多个相关的系统。

当用户首次登录系统时,系统会验证用户的用户名和密码,并为用户颁发一个安全的令牌。

之后,用户在访问其他系统时,不需要再次输入用户名和密码,而是使用之前颁发的令牌进行身份验证,从而实现了“单点登录”。

单点登录的实现可以通过不同的技术手段,如基于SAML、OAuth、OpenID Connect等标准的身份认证协议,以及一些商
业化的SSO解决方案。

企业可以根据自己的需求和现有系统
的情况选择合适的单点登录解决方案,从而提升员工的工作效率和信息安全性。

通过部署单点登录技术,企业可以实现员工只需一次登录就能访问多个相关系统,避免了繁琐的多次登录操作,提高了员工的工作效率。

同时,单点登录也能减少用户忘记密码或者使用弱密码带来的安全风险,提高了企业信息系统的安全性。

综上所述,单点登录技术是解决企业多系统登录难题的最佳方案之一,它为企业提供了便利的用户体验和更高的信息安全性。

在信息化发展的今天,部署单点登录技术已成为企业提升工作效率和信息安全的必然选择。

单点登录解决方案

单点登录解决方案

单点登录解决方案在互联网时代,用户需要记住多个账号和密码来登录不同的应用和网站,不仅容易忘记、繁琐,还存在着安全隐患。

为了解决这个问题,单点登录(Single Sign-On,简称SSO)应运而生。

单点登录是一种被广泛应用的身份验证机制,它允许用户只需一次登录,就可以访问多个相关应用和网站,极大地提高了用户体验和便利性。

本文将介绍单点登录的定义、工作原理以及常见的解决方案。

一、单点登录的定义单点登录是一种身份验证方法,它使用户只需一次登录就能够访问多个相关的应用和网站。

简单来说,用户只需输入一次账号和密码,就能够自由地切换不同的应用和网站,无需再次输入登录凭证。

这种方式不仅提高了用户体验,还能减轻用户记忆和管理多个账号密码的负担。

二、单点登录的工作原理单点登录的工作原理基于标识提供者(Identity Provider,简称IdP)和服务提供者(Service Provider,简称SP)之间的协作。

具体流程如下:1. 用户访问某个服务提供者的应用或网站。

2. 服务提供者将用户重定向到标识提供者的登录页面。

3. 用户在标识提供者的登录页面输入账号和密码进行身份验证。

4. 标识提供者验证用户的身份并生成一个令牌(Token)。

5. 标识提供者将令牌返回给服务提供者。

6. 服务提供者使用令牌进行身份验证,并向用户提供相应的服务。

通过以上流程,用户只需进行一次登录,即可访问多个相关的应用和网站,实现了单点登录的目的。

三、常见的单点登录解决方案单点登录的实现有多种解决方案,下面我们将介绍一些常见的解决方案:1. 基于CAS的单点登录CAS(Central Authentication Service)是一种开源的单点登录协议和框架。

它通过一个中央认证服务器来完成认证工作,其他应用和网站作为客户端与认证服务器进行通信。

CAS的优点是简单、可扩展性强,适用于多种环境和语言。

2. 基于OAuth的单点登录OAuth(Open Authorization)是一种用于授权的开放标准,它允许用户授权第三方应用访问他们在某个服务提供者上存储的信息。

SSO单点登录解决方案

SSO单点登录解决方案

SSO单点登录解决方案1 什么是单点登陆单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。

例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的服务等等。

这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。

这些不同的系统往往是在不同的时期建设起来的,运行在不同的平台上;也许是由不同厂商开发,使用了各种不同的技术和标准。

如果举例说国内一著名的IT公司(名字隐去),内部共有60多个业务系统,这些系统包括两个不同版本的SAP的ERP系统,12个不同类型和版本的数据库系统,8个不同类型和版本的操作系统,以及使用了3种不同的防火墙技术,还有数十种互相不能兼容的协议和标准,你相信吗?不要怀疑,这种情况其实非常普遍。

每一个应用系统在运行了数年以后,都会成为不可替换的企业IT架构的一部分,如下图所示。

随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。

其一是管理上的开销,需要维护的系统越来越多。

很多系统的数据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。

业务和业务之间的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系统之间都不可避免的有着密切的关系。

为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。

企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。

事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。

c 单点登录解决方案

c 单点登录解决方案

c 单点登录解决方案1. 引言在现代的软件系统中,用户通常需要访问多个应用程序,而每个应用程序都需要用户提供凭证进行身份验证和授权。

这导致用户在不同的应用程序之间频繁地输入用户名和密码,给用户带来不便,并增加了身份泄露的风险。

单点登录(Single Sign-On, SSO)解决方案可以解决这个问题,它允许用户在成功登录后访问多个应用程序,而无需再次提供凭证。

本文将介绍一种基于 C 语言的单点登录解决方案,通过该方案,开发者可以在自己的 C 语言应用程序中实现单点登录功能,提升用户体验和安全性。

2. 方案概述C 单点登录解决方案基于 OAuth2.0 协议实现,通过授权验证流程实现单点登录功能。

用户登录后,系统将生成一个访问令牌(Access Token),该令牌将用户的身份信息和授权范围封装在一起。

当用户访问其他应用程序时,应用程序可以通过验证令牌来验证用户的身份和授权范围,避免用户再次登录。

3. 方案实现为了实现 C 单点登录解决方案,我们需要进行以下步骤:3.1 注册应用程序在开始之前,我们需要在认证服务器上注册我们的应用程序。

为了完成注册,我们需要提供应用程序的身份验证回调URL,该URL将在用户成功登录后重定向用户到我们的应用程序。

3.2 用户登录当用户打开我们的应用程序并尝试访问需要登录的页面时,我们将跳转到认证服务器的登录页面。

用户需要输入用户名和密码进行身份验证。

在用户成功登录后,认证服务器将生成一个授权码(Authorization Code)并将其传递回我们的应用程序。

3.3 获取访问令牌我们的应用程序将使用授权码来请求访问令牌。

我们需要使用合适的OAuth2.0 库或自己实现 OAuth2.0 请求来发送请求并获取访问令牌。

3.4 验证访问令牌当用户访问其他需要身份验证的应用程序时,该应用程序需要验证访问令牌的有效性。

我们需要在该应用程序中实现验证访问令牌的逻辑。

这通常涉及解析令牌的内容并验证签名。

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

SSO解决方案大全Single Sign-On for everyone前段时间为我们的系统做SSO(单点登录)参考了很多资料,其中包括博客园二级域名的登录.翻译本文是由于作者的一句话:思想都是一样的,只不过实现起来需要创造性思维.Single Sign-On (SSO)是近来的热门话题. 很多和我交往的客户中都有不止一个运行在.Net框架中的Web应用程序或者若干子域名.而他们甚至希望在不同的域名中也可以只登陆一次就可以畅游所有站点.今天我们关注的是如何在各种不同的应用场景中实现SSO. 我们由简到繁,逐一攻破.1.虚拟目录的主应用和子应用间实现SSO2.使用不同验证机制实现SSO (username mapping)3.同一域名中,子域名下的应用程序间实现SSO4.运行在不同版本.NET下的应用程序间实现SSO5.两个不同域名下的Web应用程序间实现SSO6.混合身份验证方式模式(Forms and Windows)下实现SSO1. 虚拟目录的主应用和子应用之间实现SSO假设有两个.Net的Web应用程序-Foo和Bar,Bar运行在Foo虚拟目录的子目录().二者都实现了Forms认证.实现Forms认证需要我们重写Application_AuthenticateRequest,在这个时机我们完成认证一旦通过验证就调用一下FormsAuthentication.RedirectFromLoginPage.这个方法接收的参数是用户名或者其它的一些身份信息.在中登录用户的状态是持久化存储在客户端的cookie中.当你调用RedirectFromLoginPage时就会创建一个包含加密令牌FormsAuthentication Ticket的cookie,cookie名就是登录用户的用户名.下面的配置节在Web.config定义了这种cookie 如何创建:<authentication mode="Forms"><forms name=".FooAuth"protection="All"timeout="60"loginUrl="login.aspx" /></authentication><authentication mode="Forms"><forms name=".BarAuth"protection="All"timeout="60"loginUrl="login.aspx" /></authentication>比较重要的两个属性是name和protection. 按照下面的配置就可以让Foo和Bar两个程序在同样的保护级别下读写Cookie,这就实现了SSO的效果:<authentication mode="Forms"><forms name=".SSOAuth"protection="All"timeout="60"loginUrl="login.aspx" /></authentication>当protection属性设置为"All",通过Hash值进行加密和验证数据都存放在Cookie中.默认的验证和加密使用的Key都存储在machine.config文件,我们可以在应用程序的Web.Config文件覆盖这些值.默认值如下:<machineKey validationKey="AutoGenerate,IsolateApps"decryptionKey="AutoGe nerate,IsolateApps"validation="SHA1"/>IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps 选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"vali dation="SHA1"/>如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已.2.使用不同认证机制实现SSO (username mapping)要是FOO站点使用database来做认证,Bar站点使用Membership API或者其它方式做认证呢?这种情景中FOO站点创建的cookie对Bar站点毫无用处,因为cookie中的用户名对Bar没有什么意义.要想cookie起作用,你就需要再为Bar站点创建一个认证所需的cookie.这里你需要为两个站点的用户做一下映射.假如有一个Foo站点的用户"John Doe"在Bar站点需要识别成"johnd".在Foo站带你你需要下面的代码:FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "johnd", Dat eTime.Now, , true, "");HttpCookie cookie = new HttpCookie(".BarAuth");cookie.Value = FormsAuthentication.Encrypt(fat);cookie.Expires = fat.Expiration;;FormsAuthentication.RedirectFromLoginPage("John Doe");为了演示用户名硬编码了.这个代码片段为Bar站点创建了令牌FormsAuthenticationTicket ,这时令牌里的用户名在Bar站点的上下文中就是有意义的了. 这时再调用RedirectFromLoginPage创建正确的认证cookie.上面的例子你统一了了Forms 认证的cookie名字,而这里你要确保他们不同--因为我们不需要两个站点共享相同的cookie:<authentication mode="Forms"><forms name=".FooAuth"protection="All"timeout="60"loginUrl="login.aspx"s lidingExpiration="true"/></authentication><authentication mode="Forms"><forms name=".BarAuth"protection="All"timeout="60"loginUrl="login.aspx"sl idingExpiration="true"/></authentication>现在当用户在Foo站点登录,他就会被映射到到Bar站点的用户并同时创建了Foo和Bar两个站点的认证令牌.如果你想在Bar站点登录在Foo站点通行,那么代码就会是这样: FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "John Doe", DateTime.Now, , true, "");HttpCookie cookie = new HttpCookie(".FooAuth");cookie.Value = FormsAuthentication.Encrypt(fat);cookie.Expires = fat.Expiration;;FormsAuthentication.RedirectFromLoginPage("johnd");同样要保证两个站点的Web.config的<machineKey>配置节有相同的加密和解密的Key!3. 同一域名中,各子域名下应用程序间实现SSO要是这样的情况又将如何:Foo Bar两个站点运行在不同的域名下: and . 上面的代码又不起作用了:因为cookie会存储在不同的文件中,各自的cookie对其它网站不可见.为了能让它起作用我们需要创建域级cookie,因为域级cookie对子域名都是可见的!这里我们也不能再使用R edirectFromLoginPage 方法了,因为它不能灵活的创建域级cookie我们需要手工完成这个过程!FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "johnd", Dat eTime.Now, , true, "");HttpCookie cookie = new HttpCookie(".BarAuth");cookie.Value = FormsAuthentication.Encrypt(fat);cookie.Expires = fat.Expiration;cookie.Domain = "";;FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "John Doe", DateTime.Now, , true, "");HttpCookie cookie = new HttpCookie(".FooAuth");cookie.Value = FormsAuthentication.Encrypt(fat);cookie.Expires = fat.Expiration;cookie.Domain = "";;注意cookie.Domain = "";注意这一行.这里明确指定了cookie的域名为"",这样我们就保证了cookie对和以及其它子域名都是可见的.(译者注:cookie的域名匹配规则是从右到左).你可以通过设置Bar站点的认证cookie的域名为"".这样对于其它子域名的站点它的cooki e也是不可见的,这样安全了.注意RFC 2109 要求cookie前面有两个周期所以我们添加了一个过期时间.(cookie值实际上是一个字符串,各参数用逗号隔开).再次提醒,这里还是需要统一一下各个站点的Web.config的<machineKey>配置节的Key值. 这种解决方案只有一种异常的情况,且看下节详解.4. 运行在不同版本.Net下应用程序间实现SSO要是Foo和Bar站点运行在不同的.Net环境中上面的例子都行不通.这是由于 2. 0使用了不同于1.1的加密算法:1.1版本使用的是3DES,2.0是AES.万幸,<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"vali dation="SHA1"decryption="3DES"/>设置decryption="3DES"就会让 2.0使用旧版本的加密算法使cookie能够正常使用.不要企图在,那会报错.5. 两个不同域名下的应用程序实现SSO我们已经成功的创建了可以共享的认证Cookie,但是如果Foo站点和Bar站点在不同域名下呢,例如:和? 他们不能共享cookie也不能为对方在创建一个可读的cookie.这种情况下每个站点需要创有各自的cookie,调用其它站点的页面来验证用户是否登录.其中一种实现方式就是使用一系列的重定向.为了实现上述目标,我们需要在每个站点都创建一个特殊的页面(比如:sso.aspx).这个页面的作用就是来检查该域名下的cookie是否存在并返回已经登录用户的用户名.这样其它站点也可以为这个用户创建一个cookie了.下面是的sso.aspx::<%@Page Language="C#"%><script language="C#"runat="server">void Page_Load(){// this is our caller, we will need to redirect back to it eventually UriBuilder uri = new UriBuilder(Request.UrlReferrer);HttpCookie c = ".BarAuth"];if(c != null&& c.HasKeys) // the cookie exists!{try{string cookie = ;FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(cookie); uri.Query = uri.Query + "&ssoauth="+ ; // add logged-in user n ame to the query}catch{}}Response.Redirect(uri.ToString()); // redirect back to the caller}</script>这个页面总是重定向回调用的站点.如果存在认证cookie,它就解密出来用户名放在ssoa uth参数中.另外一端(),我们需要在HTTP Rquest处理的管道中添加一些的代码.可以是Web应用程序的Application_BeginRequest 事件或者是自定义的HttpHandler或HttpModule.基本思想就是在所有的页面请求之前做拦截,尽早的检查验证cookie是否存在:1. 如果的认证cookie已经存在,就继续处理请求,用户在登录过2. 如果认证Cookie不存在就重定向到/sso.aspx.3. 如果现在的请求是从/sso.aspx重定向回来的,分析一下ssoauth参数如果需要就创建认证cookie.路子很简单,但是又两个地方要注意死循环:// see if the user is logged inHttpCookie c = ".FooAuth"];if(c != null&& c.HasKeys) // the cookie exists!{try{string cookie = ;FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(cookie);return; // cookie decrypts successfully, continue processing the page}catch{}}// the authentication cookie doesn't exist - ask if the user is logged in thereUriBuilder uri = new UriBuilder(Request.UrlReferrer);if(uri.Host != ""|| uri.Path != "/sso.aspx") // prevent infinite loop {Response.Redirect();}else{// we are here because the request we are processing is actually a respons e from if(Request.QueryString["ssoauth"] == null){// also didn't have the authentication cookiereturn; // continue normally, this user is not logged-in} else{// user is logged in to and we got his name!string userName = (string)Request.QueryString["ssoauth"];// let's create a cookie with the same nameFormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, userName, DateTime.Now, , true, "");HttpCookie cookie = new HttpCookie(".FooAuth");cookie.Value = FormsAuthentication.Encrypt(fat);cookie.Expires = fat.Expiration;;}}同样的代码两个站点都要有,确保你使用了正确的cookie名字(.FooAuth vs. .BarAut h) . 因为cookie并不是真正意义上的共享,因为Web应用程序的有不同的<machineKey>配置节. 这里没有必要统一加密和解密的Key.有些人把在url里面把用户名当作参数传递视为畏途.实际上有两件事情可以做来保护:首先我们可以检查引用页参数不接受/sso.aspx (or /ssp.aspx)以外的站点.其次,用户名可以可以通过相同的Key做一下加密.如果Foo和Bar使用不同的认证机制,额外的用户信息(比如email地址)同样也可以传递过去.6. 混合身份验证模式下(Forms and Windows)实现SSO上面我们都是处理的Forms认证.要是我们这样设计认证过程呢:先做Forms认证,如果没有通过就检查Intranet用户是否已经在NT域上登录过了.这个思路我们需要检查下面的参数来看和请求关联的Windows logo信息:Request.ServerVariables["LOGON_USER"]但是除非我们的站点都是禁用匿名登录的,否则这个值总是空的.我们可以在IIS的控制面板禁用匿名登录并为我们的站点启用Windows集成认证.这样LOGON_USER 值就包含了NT域登录用户的名字.但是所有Internet用户的都会遇到用户名和密码的难题,这就不好了,我们要让Inter net用户使用Forms认证要是这种方式失败了再使用Windows域认证.这个问题的解决方法之一就是为Intranet用户设置一个特殊的入口页面:Windows集成认证方式可用,验证域用户,创建Forms cookie重定向到主站点.我们甚至可以隐藏这样一个事实:由于Server.TransferIntranet用户实际上访问了不同的页面.也有一个简单的解决方法.这个方法的基础是IIS掌控认证处理.如果站点对匿名用户可用,II S就把请求传递给运行时.并试图进行认证要是失败了就引发一个401错误.IIS会试图寻找另外该站点的其它认证方式.你要设置匿名访问和集成认证可用并在Forms认证失败之后执行下面的代码:if("LOGON_USER"] == "") {= 401;;}else{// Request.ServerVariables["LOGON_USER"] has a valid domain user now!}这段代码执行时,它会检查域用户并取得一个空的初始值.这回终止当前请求并返回认证的401错误到IIS.这就让IIS自动选择另外的认证机制,Windows集成认证方式就是候选方式.如果用户可以登录到域,请求就可以继续,并附加上了NT域用户的信息. 如果用户没有在域中登录会有三次输入用户名密码的机会.如果三次失败他就会得到一个403错误(AccessDenied).结论我们考查了在各种场景中在两个应用程序间实现SSO.我们也可以在不同系统不同平台间实现SSO,思想都是一样的,只不过实现起来需要创造性思维.源文档<>。

相关文档
最新文档