为什么要将 GITkit.idToken 替换为 Session 令牌?
Why should the GITkit.idToken be replaced by a Session Token?
Now use the idToken to create a session for your user. To do so, you
should exchange the idToken for either a Session Token or Cookie from
your server. Finally, save the Session Token or Cookie to maintain
your user's session.
在问题 的答案示例代码中,通过 Android 获得的令牌的 backend-server 令牌验证似乎足以确保拥有有效、安全的令牌可以在与后端的任何 follow-up 通信期间添加到 Android 客户端 headers。
那么为什么要推荐you should exchange the idToken for either a Session Token or Cookie from your server
?
这是因为 idToken 的大小(几乎 1KB,IIRC)吗?
存在哪些建议(最简单和最安全的方法)来生成这样的 Session 令牌?
是否还有其他反对将 idToken 用作 Session 令牌而不是大小的论点?
Session 令牌是否可以作为 idToken(Python 中的 idToken.split(".")[0]
)的第一部分("token")?还是有效载荷(idToken.split(".")[1]
)?或者创建 idToken 的 SHA1? 编辑: 好的,我意识到使用 JTW header 是愚蠢的,但有效载荷至少有几个变量(iat
和 exp
可能还有 user_id
),但签名?
gitkit.js ("gtoken") 创建的 token/cookie 是 idToken 本身,是否也应该用 session 令牌代替?
推荐使用自己的session有几个原因token/cookie:
1) 大多数现有的 Web 服务器框架都有自己的会话管理机制(带有过期时间的 cookie 生成等)。常见的方法是生成一个随机字符串作为会话 ID,并将服务器端用户活动与会话 ID 相关联。服务器然后指示浏览器设置会话 ID 的 cookie。替换该机制是不必要的,有时甚至很难。
2) 正如您提到的,IdToken 比普通会话 cookie 大得多。
3) 目前 Google Identity Toolkit IdToken 将在两周后过期。
除了这些考虑之外,IdToken 作为会话令牌是足够安全的。确保 - 不要 - 使用 IdToken 的任何子部分作为会话 cookie,因为攻击者可以轻松创建一个假的。
如果您的服务器发出自己的会话 cookie,您应该在用户会话终止后删除 gtoken,以便 gitkit.js 的登录按钮状态与您的服务器保持同步。
Now use the idToken to create a session for your user. To do so, you should exchange the idToken for either a Session Token or Cookie from your server. Finally, save the Session Token or Cookie to maintain your user's session.
在问题
那么为什么要推荐you should exchange the idToken for either a Session Token or Cookie from your server
?
这是因为 idToken 的大小(几乎 1KB,IIRC)吗?
存在哪些建议(最简单和最安全的方法)来生成这样的 Session 令牌?
是否还有其他反对将 idToken 用作 Session 令牌而不是大小的论点?
Session 令牌是否可以作为 idToken(Python 中的 idToken.split(".")[0]
)的第一部分("token")?还是有效载荷(idToken.split(".")[1]
)?或者创建 idToken 的 SHA1? 编辑: 好的,我意识到使用 JTW header 是愚蠢的,但有效载荷至少有几个变量(iat
和 exp
可能还有 user_id
),但签名?
gitkit.js ("gtoken") 创建的 token/cookie 是 idToken 本身,是否也应该用 session 令牌代替?
推荐使用自己的session有几个原因token/cookie:
1) 大多数现有的 Web 服务器框架都有自己的会话管理机制(带有过期时间的 cookie 生成等)。常见的方法是生成一个随机字符串作为会话 ID,并将服务器端用户活动与会话 ID 相关联。服务器然后指示浏览器设置会话 ID 的 cookie。替换该机制是不必要的,有时甚至很难。
2) 正如您提到的,IdToken 比普通会话 cookie 大得多。
3) 目前 Google Identity Toolkit IdToken 将在两周后过期。
除了这些考虑之外,IdToken 作为会话令牌是足够安全的。确保 - 不要 - 使用 IdToken 的任何子部分作为会话 cookie,因为攻击者可以轻松创建一个假的。
如果您的服务器发出自己的会话 cookie,您应该在用户会话终止后删除 gtoken,以便 gitkit.js 的登录按钮状态与您的服务器保持同步。