【问题标题】:Do we need to generate token id everytime before call webservice我们是否需要在每次调用 web 服务之前生成令牌 id
【发布时间】:2015-02-28 02:34:26
【问题描述】:

您好,我是在 android 中验证后端的 OAuth 流程,因此我在 Google API 控制台创建了一个项目,在那里我为 web 和 android 应用程序创建了客户端 ID。

我这样做是为了让系统更安全,这样任何黑客都无法访问我的网络服务,如果有人这样做,那么身份验证服务器会发送响应(无效令牌)。

对于android中的这个过程,我必须生成令牌。 Google Play Service 库有一个方法。

public static String getToken (Context context, String accountName, String scope)

http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context,%20java.lang.String,%20java.lang.String)

每次在我的应用程序中调用任何网络服务之前,我都必须生成这个令牌 ID,因为 afaik 这个令牌会在一小时内过期。这在一定程度上增加了延迟,因为它首先从 Google 获取令牌 ID,然后我使用令牌 ID 调用我的 Web 服务。

这看起来不是最好的方法。您对此有何建议?

提前致谢。

【问题讨论】:

    标签: java android web-services oauth google-oauth


    【解决方案1】:

    我认为最好的方法是在令牌已过期时首先检查您的客户端代码。如果不是,则不要生成新令牌,只需使用您已有的令牌直接调用 Web 服务即可。如果它过期了,那么首先获取一个新的令牌,然后调用 web 服务。这样,只有在您的令牌实际过期时,即当您实际需要更新它时,您才会进行 2 次远程调用。

    要实施此策略,您需要记住的(在您的代码中)是:
    1) 您生成令牌的日期和时间; 2) 持续时间。

    【讨论】:

    • 如何知道该令牌何时到期?我如何获得过期时间?
    • @Williams 我认为这应该在令牌生成 API 的文档中。或者......令牌生成 API 中应该有另一种方法为您提供令牌的持续时间(有效时间)。至少,此类与令牌相关的 API 通常是这样设计的。
    • 不确定这是否相同,但请检查例如:developers.google.com/accounts/docs/OAuth2#expiration
    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2012-12-06
    • 2021-02-22
    • 1970-01-01
    • 2020-09-20
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多