所以。我有域A.com,其中的用户身份验证是在域B.com完成的。目前,我已经设置了它,以便将登录表单发布到B.com,后者(如果成功的话)设置会话cookie并将其重定向到A.com/loggedin。但是,由于表单被发布到B.com,cookie被设置为该域,所以当我从A.com发出JSON请求时,会话cookie是不可用的--我不知道他们是否登录。然后问题就变成了,如何解决这个问题?
我一直在考虑一种解决方案,在重定向uri中添加一个令牌,然后可以用A.com一次性使用经过身份验证的会话创建(浏览器可以使用该令牌来使用B.com来记录会话,以便将cookie设置为A.com,并在JSON请求中可用。在此之后,令牌将失效( ofc)。
但是,我不确定这个解决方案有多安全?还是还有其他更安全的解决方案?
发布于 2013-11-15 06:49:14
您当前的解决方案在我看来不错,可以在这个场景中使用。但出于安全考虑,您可能不需要提供简单的令牌,而是希望使用一些好的加密方法对其进行加密,并在此基础上配置您的服务器,以便在使用之前对authentication token进行加密和解密。唯一的问题是,您需要为您的情况选择最佳的算法。
除了这个解决方案之外,您还可以考虑会话管理工具。Session Migration、Session Replication和会话共享是我能想到的选项。
下面是链接为会话共享提供的解决方案,我认为这在您的情况下会有所帮助。
发布于 2013-11-21 12:07:30
是的,还有更安全的选择。
对于单点登录,有一个名为OpenID/connect (构建在oAuth2.0之上)的开放标准,用于资源共享、授权和身份验证,有oAuth。
要记住的事情。
利用社区已经完成的工作。
oAuth 1.0a (至今仍被广泛接受为最安全的模式)- https://www.rfc-editor.org/rfc/rfc5849 oAuth 2- http://oauth.net/2/ (使用openID进行基于oAuth2的授权)
oAuth 2并不是oAuth 1a的替代品--它是一个完全新的(安全性较低)的想法,严重依赖于SSL -- oAuth1a仍然是最安全的--但仍然只有您的实现和对潜在弱点的理解才能做到这一点。
您可能正在寻找openID连接的想法--但是oAuth信息也很有用.
openID连接(分层在oAuth 2上)
oAuth概念
发布于 2013-11-21 18:57:26
安全断言标记语言(SAML,发音为“SAML”1)是一种基于XML的开放标准数据格式,用于在各方之间,特别是在身份提供者和服务提供者之间交换身份验证和授权数据。SAML是绿洲安全服务技术委员会的产品。SAML可追溯到2001年;SAML的最新更新是2005年。
对SAML地址的一个最重要的要求是web浏览器单点登录(SSO)。单个登录解决方案在intranet级别上很常见(例如使用cookie),但是将这些解决方案扩展到intranet之外是有问题的,并导致不可互操作的专有技术的扩散。(解决浏览器SSO问题的另一种最新方法是OpenID协议。)SAML规范定义了三个角色:主体(通常是用户)、身份提供者(IdP)和服务提供者(SP)。在SAML所处理的用例中,主体向服务提供者请求服务。服务提供程序请求并从标识提供程序获得标识断言。基于这一断言,服务提供者可以做出访问控制决策--换句话说,它可以决定是否为连接的主体执行某种服务。
在向SP传递身份断言之前,IdP可能会请求主体(例如用户名和密码)提供一些信息,以便对主体进行身份验证。SAML指定三方之间的断言:特别是断言从IdP传递给SP的标识的消息。在SAML中,一个身份提供者可以向许多服务提供者提供SAML断言。相反,一个SP可能依赖和信任许多独立国内流离失所者的断言。SAML没有指定身份提供者的身份验证方法;它可以使用用户名和密码,或者其他形式的身份验证,包括多因素身份验证。目录服务允许用户使用用户名和密码登录,是身份提供者身份验证令牌(例如密码)的典型来源。流行的互联网社交网络服务也提供身份服务,理论上可以用来支持SAML交换。
语言
https://stackoverflow.com/questions/19845345
复制相似问题