oAuth协议中accessToken的到期日期

时间:2012-03-02 22:58:07

标签: c# oauth dotnetopenauth

我正在使用dotNetOpenAuth对Google oAuth提供商进行授权。

我对以下内容之间的区别感到困惑:

consumerTokenconsumerSecretaccessToken

从提供商处获取某些用户的accessToken。可以永远保持我吗?或者它会过期吗?

代码如何在不将用户重定向到“允许访问我的Google数据页”的情况下启用授权?

3 个答案:

答案 0 :(得分:5)

绝不期望对accessToken的生命期有任何期望。在任何时候,您都可以获得403 HTTP错误,该错误应该在您的应用程序中触发以下内容:

  • 如果您有refreshToken,请在没有资源所有者(最终用户)互动的情况下获取新的accessToken
  • 如果没有,请再次询问用户授权您的申请

答案 1 :(得分:2)

您正在使用的OAuth 1.0不包含用于预测访问令牌何时到期的规定,因此您必须阅读Google的OAuth 1.0访问令牌文档,以了解其持续时间。

  

代码如何在不将用户重定向到“允许访问我的Google数据页”的情况下启用授权?

你没有。如果你能做到这一点,那将是一个巨大的安全漏洞。用户必须授权您的应用访问他/她的数据。但是,一旦获得授权,通过存储您获得的访问令牌(及其秘密),您应该能够在将来使用它并避免用户授权步骤(直到用户撤销令牌或其他方式到期)

答案 2 :(得分:0)

OAuth中的“AccessToken”通常具有相对较短的到期时间(即在Facebook和Messenger案例中不到一天)。如果实现支持它,那么“refreshToken”就是你可以保持更长的时间(数周/月的范围取决于提供者)。

根据文档(https://developers.google.com/accounts/docs/OAuth2),Google支持刷新令牌,因此如果您想存储令牌 - 它就是那个。

请注意,accessToken和refreshToken都代表非常敏感的信息(与明文用户名和密码相当),因此请查看提供商有关存储这些信息的建议和要求。