在客户端页面上跟踪OAuth 2提供程序

时间:2015-01-12 14:28:03

标签: asp.net oauth-2.0 access-token

我可以在我的网站上通过Facebook和Google登录。这是使用OAuth2完成的。

无论用户是从facebook还是google返回,我使用相同的重定向网址,并在州字段中传递提供商名称。这是跟踪提供商的推荐方式吗?否则,如果我不知道令牌来自哪个提供程序,我不知道如何验证令牌。

是否有其他首选方法可以实现此目的?

1 个答案:

答案 0 :(得分:1)

state参数应该是一个不透明的值,攻击者无法猜到它,因为它没有受到修改的保护。如果您需要跟踪状态,则应使用state参数引用,但该参数本身应随机化和/或加密。在state参数中以明文形式存储提供程序标识符并不安全。用户可以自行修改state参数,或者攻击者可以使用他们选择的state值制定授权请求。

跟踪提供程序的方法是将其存储在后端会话状态中,并生成对您在state参数中传递的会话/状态的引用。为了防止跨站点请求伪造,您还应该保留一些加密/随机化的cookie,将状态绑定到浏览器。这将更详细地描述:https://tools.ietf.org/html/rfc6749#section-10.12

附录:

使用OAuth 2.0 +提供程序特定扩展进行登录的一个问题就是:您无法以统一和通用的方式为所有提供程序设置提供程序和用户标识。在您的情况下,您必须先了解提供商,然后才能与其进行合理的互动。输入OpenID Connect:它是OAuth 2.0的扩展配置文件,以标准化方式为您提供登录语义。它会为您提供一个可验证的JSON对象(JWT),其标准值可以告诉您提供者是谁(iss)以及用户是谁(sub)。

谷歌登录已经已经迁移到OpenID Connect,微软和其他像Salesforce一样,希望Facebook会跟进。