我正在开发的一个应用程序允许用户登录支持 OAuth 的后端。因此,应用程序仅了解身份验证令牌和用户元数据,而不了解用户的凭据。
在应用程序中,用户可以点击在浏览器中打开链接的链接。这些资源也受到 OAuth 的保护,登录原生应用时获得的 token 也与 Web 相关。
我希望用户的凭据以标准 OAuth 方式从本机应用程序流向 Web 浏览器(通过将其作为Authorization
标题)。
Android 似乎通过其共享凭证 https://developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites功能,但我找不到 iOS 的等效功能。我确实找到了共享网络凭据 https://developer.apple.com/reference/security/shared_web_credentials功能,但这似乎需要了解用户的凭据。
如何将 OAuth 令牌从本机应用程序流向它打开的 Web 浏览器?
关联域和共享 Web 凭据在这里似乎不是一个好方法。
您有两个选择:
- 将 OAuth 访问令牌作为 URL 查询字符串参数传递给
网页浏览器。
https://x.y.z/?access_token=abc
您必须操作嵌入的 URL 并确保您的后端理解这一点。
非常常见且简单的方法。许多网站,例如 Facebook 和
Google 在 URL 中传递访问令牌。
- 如果您使用应用内浏览器(UIWebView、WKWebView),您可以拦截 URL 请求并自行添加授权标头。看this https://stackoverflow.com/questions/25539837/how-to-add-customize-http-headers-in-uiwebview-request-my-uiwebview-is-based-on对于 UIWebView 和this https://stackoverflow.com/questions/28984212/how-to-add-httpheader-in-request-globally-for-ios-swift/37474812#answer-37474812对于WKWebView(比UIWebView难一点)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)