j2e*_*nue 2 android google-smartlockpasswords
我想知道这里是否存在安全问题?任何使用 google 智能锁的应用程序都会知道用户的 google、twitter 等帐户凭据,对吗?看看这个谷歌教程here,在credentialsRetrieved回调中,Credential对象具有应用程序可以访问的用户用户名和密码。但是现在应用程序知道用户的 google 或 twitter 帐户?这是我正在谈论的代码:
private void onCredentialRetrieved(Credential credential) {
String accountType = credential.getAccountType();
if (accountType == null) {
// Sign the user in with information from the Credential.
//right here we have the users login credentials, dont we ?? There exposed.
signInWithPassword(credential.getId(), credential.getPassword());
} else if (accountType.equals(IdentityProviders.GOOGLE)) {
// The user has previously signed in with Google Sign-In. Silently
// sign in the user with the same ID.
// See https://developers.google.com/identity/sign-in/android/
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.setAccountName(credential.getId())
.build();
OptionalPendingResult<GoogleSignInResult> opr =
Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
所以我在这里看到的是 Credentials 对象可以公开用户密码。我意识到继续登录过程需要凭据,但这是用户在打开智能锁时做出的选择吗?
更糟糕的情况:想象一下用户启用智能锁,我制作了一个使用智能锁的应用程序。现在我可以访问用户的 Twitter 帐户凭据并进行恶意操作。如何保护用户?
我在 Google 的 Smart Lock 团队工作,希望这能回答您的问题:
对于 Google、Facebook、Twitter 或其他“联合”凭据,这些身份提供商帐户的密码不会存储在凭据中。此类凭据上的密码字段为空,“凭据”仅用作指示用户用于给定应用程序的身份提供者的指针。这个想法是,保存和检索这样的凭据将使应用程序知道当前用户有一个现有帐户,并且应该使用特定的登录方法(并且可以通过触发相应的流程自动登录用户,或帮助自定义UI,以便用户在返回时使用适当的方法登录)。
请注意,从当前版本的 Play Services (8.4) 开始,如果应用程序尝试使用帐户类型和密码集构建和保存凭据,则 API 将抛出错误;第三方应用程序不应要求或存储身份提供者的密码。只有当前用户用于登录服务本身的应用程序的第一方密码应通过 API 存储在凭证中,并且在这种情况下不应设置帐户类型。
在问题的示例代码中,Google 类型的凭据用于以编程方式触发 Google 登录流程(请参阅此处的Auth.GoogleSignInApi.silentSignIn()调用和完整示例),即自动使用 Google 登录用户,就像他们点击了Google 登录按钮,因为他们存储了“Google”类型的凭据。
通常,还请注意,应用程序只能检索已从应用程序本身(由 Android 上的程序包和证书签名标识)或 Chrome 中为已验证和关联的网站保存的凭据(请参阅详细信息)。这意味着应用程序只能访问它代表用户存储的数据(可能在另一台设备上,其想法是 Smart Lock API 有助于检索跨设备的身份验证详细信息),或者用户输入的用户名和密码关联的网站,并选择通过 Chrome 的密码管理器使用 Google 保存。
如果这回答了您的问题或您需要更多信息,请发表评论!
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |