【问题标题】:Is email authentication using id token possible?是否可以使用 id 令牌进行电子邮件身份验证?
【发布时间】:2018-06-11 12:44:20
【问题描述】:

我正在为使用扩展的 iOS 应用程序创建 POC。扩展必须知道用户是否经过身份验证。不幸的是,包含应用程序和扩展程序是独立的应用程序,这意味着我必须在某处保留身份验证状态。

我不想存储用户电子邮件和密码,而是存储令牌并使用它进行身份验证。但是,尝试使用颁发的 tokenproviderId (Firebase) 进行身份验证似乎可行。

两个应用都在同一个 Firebase 项目下。

主应用程序(Firebase ios App1)

let userDefatuls = UserDefaults(suiteName: "group.test")
userDefatuls?.set(providerId!, forKey: "providerId")
userDefatuls?.set(value!, forKey: "token")
print("Saved value to user defaults \(value!)")
userDefatuls?.synchronize()

扩展应用程序(Firebase ios App2)

let userDefaults = UserDefaults(suiteName: "group.test")
let token = userDefaults?.string(forKey: "token")
let providerId = userDefaults?.string(forKey: "providerId")
print("What is the provider id \(providerId)")
let credential = OAuthProvider.credential(withProviderID: providerId!, accessToken: token!)
Auth.auth().signIn(with: credential) { (user, error) in
    print("********* What is the user \(user) what is the error \(error)")
}

以上渲染:

什么是用户 nil 什么是错误:

Optional(Error Domain=FIRAuthErrorDomain Code=17999 "发生内部错误,打印并检查错误详细信息以获取更多信息。" UserInfo={error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=发生内部错误,打印并检查错误详细信息以获取更多信息。NSUnderlyingError=0x600000447290 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={ 代码 = 400; 错误 = ( { 域=全局; message = "INVALID_PROVIDER_ID : 不支持提供者 ID。"; 原因=无效; } ); message = "INVALID_PROVIDER_ID : 不支持提供者 ID。"; }}}})

你知道支持和工作吗?是不是我做错了什么?

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

    您无法使用 Firebase ID 令牌登录。你可以做的是: 创建一个接受 ID 令牌的端点,并对其进行验证: https://firebase.google.com/docs/auth/admin/verify-id-tokens

    并返回一个自定义令牌: https://firebase.google.com/docs/auth/admin/create-custom-tokens

    然后您在扩展程序中登录。

    但是,这可能会打开一个漏洞,就像泄露了一个短暂的 ID 令牌一样,攻击者可以通过该端点将其交换为永久会话。

    如果 ID 令牌上的 auth_time 是最近的,您只能返回自定义令牌。这可确保最近登录的用户可以将他们的应用与扩展同步。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 2017-10-18
      • 2017-12-14
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2015-03-21
      • 2015-04-08
      相关资源
      最近更新 更多