如何解决Oauth2 在 android 上登录使用 google/facebook 但使用我的服务器
我有一个 aspnetcore 服务器,它发出 jwt 令牌来保护 api。 它还通过 google/facebook 提供 openid 连接登录。
当通过网络浏览器登录时,标准的 oauth 授权代码流被实现,所以 oauth 重定向到我的 redirect_uri 并处理代码,这样我的服务器然后从 facebook/google 请求令牌,然后在浏览器中存储 cookie。
这很好,直到我想创建一个 android 应用程序。此应用程序可以直接使用用户名/密码登录我自己的数据库,但我还希望在应用程序中将 oauth2 流作为登录选项针对 facebook/google。
有没有办法在不使用 webview 导航到我的登录页面并点击 Facebook 按钮的情况下做到这一点?
我想将 facebook 登录按钮直接放在 android 活动的密码编辑文本旁边。
我想到了 2 种方法,但我不知道它们是否符合 oauth2 标准。
-
在我的服务器上创建新的 redirect_uri 例如。 https://myserver.com/oauth-signin-facebook-android 然后使用此重定向显示 facebook/google oauth 授权端点的 webview,因此一旦用户确认同意,他将被带到 myserver 处理 authorozation_code 服务器将从 facebook/google 请求令牌(将其存储在 db 中),然后它将返回新的 jwt 令牌返回到 android 应用程序,以便能够访问我的 apis
-
继续在android应用程序上使用oauth2,使用myuri://facebook-login处理手机上的authorization_code的一些方案,然后从facebook/google请求令牌,这个令牌也返回openid令牌,我会然后将此 openid 令牌发送到我的服务器,该服务器将验证和登录用户并返回新的 jwt 以访问我的 api
在这两种方法中都有一些不太正确的地方。
第一种方法似乎太复杂了,而且由于某种原因,让 webview 重新定向回我的服务器来处理授权代码似乎不可行。而且我还没有对此进行进一步调查,但我想可能可以跳过 webview 并让 facebook 应用程序以某种方式处理 oauth 授权请求。那么我不知道它会如何请求在我的服务器上处理代码。
当我的服务器从 facebook/google 获取 access_token 用于以后的请求时,第二种方法不知何故丢失了部分。因为不应共享 access_token。我想它不应该共享给其他应用程序,我可以完全自由地将它发送到我信任的服务器,这对我来说似乎不正确
有没有第三种正确的方法来做到这一点?
我也不能只使用 facebook/google jwt 来访问我的 apis,因为 jwts 缺少仅在我的服务器上分配的角色。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。