我在论坛上搜索了一些资源:
我正在讨论实现基于单个登录/令牌的身份验证过程的想法。大致上,要求是:
getUserData
)考虑一下银行,或者像Mint.com这样的东西,在初始设置之后,用户可以通过薄荷立即登录,然后可以访问您的银行(可能还有多家银行机构)--从而只需一个登录就可以访问不同的系统。然而,在我的例子中,Mint.com所做的不仅仅是只读访问。
我最初的想法大致如下:
User Sign In ----> System 1, login verification generate token for itself (call it token1)
System 1 ---> generate token and pass it to System 2 (call it token2)
System 1 ---> generate token and pass it to System 3 (call it token3)
System 1 ---> return [token1, token2, token3]
从这里开始,用户该应用程序或站点等)有3个令牌,它可以用来沟通。如果用户需要从系统1执行操作/检索数据,它将通过请求传入token1,与系统2和系统3传递等。
这种方法有意义吗?
当然,这其中也存在着安全问题--如果令牌在路上的某个地方被偷了,而现在有这个令牌的人可以在令牌所代表的系统上执行操作--显然,这对像银行系统这样的事情是有害的。
系统如何验证提供令牌的请求发送方实际上是为令牌生成的合法用户?
一个想法是第二个认证级别,即。对于用户提出的每一个请求,它都需要输入一个特殊的代码(例如。就像您的银行卡PIN)一样,在请求中使用令牌--但这难道不是很烦人吗?每个请求,用户都必须输入一个PIN。
我将非常感谢您的想法和评论。
编辑:我已经看过OAuth了..。就我的理解而言,您需要实现一个生成令牌的OAuth提供程序,并允许您将它与OAuth提供程序本身一起使用,换句话说,OAuth提供程序是System #1 --但是如何使系统2和3也接受这个OAuth令牌呢?也可能是我误解了OAuth。
而且,即使使用OAuth将按照我想要的方式工作(系统1、系统2、系统3等),问题仍然存在:如果外部恶意方获得对该令牌的访问权,该怎么办?如何识别,以确保使用令牌的是授权方?
发布于 2012-07-30 20:36:24
“这种方法有意义吗?”
如果您想知道如何在StackOverflow上发明健壮的身份验证方案,那么根据定义,您就没有资格发明一个健壮的方案。事实上,我不认为这一领域的任何专家目前都有能力这样做。
这是一个你不能再发明的轮子。使用OpenID/OAuth或Kerberos或类似的东西,让专家团队分析它们的弱点,您和我都无法理解。
https://stackoverflow.com/questions/11729036
复制相似问题