Security 基于oauth的身份验证查询
我有一个使用http托管的现有web应用程序。 对于某些部分,我强制用户使用GoogleOAuth登录并获取他们的电子邮件ID。 然后我将一个cookie设置为6个月,并将其内容设置为一个编码字符串,该字符串由两个变量组成-x和zSecurity 基于oauth的身份验证查询,security,cookies,oauth-2.0,Security,Cookies,Oauth 2.0,我有一个使用http托管的现有web应用程序。 对于某些部分,我强制用户使用GoogleOAuth登录并获取他们的电子邮件ID。 然后我将一个cookie设置为6个月,并将其内容设置为一个编码字符串,该字符串由两个变量组成-x和z String x = new BigInteger(130, random).toString(32); String z = new BigInteger(130, random).toString(32); String cookieValue = URLEnco
String x = new BigInteger(130, random).toString(32);
String z = new BigInteger(130, random).toString(32);
String cookieValue = URLEncoder.encode("z="+z+"&x="+x, "UTF-8");
Cookie cookie = new Cookie("someDomain",cookieValue);
cookie.setHttpOnly(true);
cookie.setPath("/");
cookie.setMaxAge(6 Months);`
然后,这些相同的值“x”和“z”根据用户记录存储在数据库中以及用户每次访问时-这些值在cookie和数据库中都会更改
您认为这种方法存在任何安全问题吗?连接的两个随机值不会比单个随机值y(其中longing=lengthx+lengthz)提供更多的熵/随机性 像这样的系统只能通过安全的HTTPs使用,但即便如此:使用一个有效期为6个月的cookie也不是一种真正安全的方法。最好定期检查相关用户的帐户是否仍然存在于谷歌,例如使用谷歌的刷新令牌 利用Google+Signin的典型web应用程序只需依靠Google来维护SSO会话状态,而不会覆盖其应用程序的SSO会话状态。因此,应用程序将使用仅在浏览器会话期间有效的会话cookie,并使用户再次通过Google Signin进行新会话,由Google确定SSO会话是否仍然存在
将SSO会话外包给Google避免了在应用程序中存储长寿命会话cookie的需要,并提高了整体安全性,同时增加了显式登录的数量,这对于连接到Google+Signin的其他应用程序来说无论如何都会发生。从使用https开始。