Kei*_*ith 5 authentication node.js passport.js google-signin
我有一个 node.js 服务器,它使用 google-passport-oauth2 进行身份验证。我的服务器端代码看起来像文档中的那样:
app.get('/auth/google',
passport.authenticate('google', { scope:
[ 'https://www.googleapis.com/auth/plus.login',
, 'https://www.googleapis.com/auth/plus.profile.emails.read' ] }
));
app.get( '/auth/google/callback',
passport.authenticate( 'google', {
successRedirect: '/auth/google/success',
failureRedirect: '/auth/google/failure'
}));
Run Code Online (Sandbox Code Playgroud)
我认为这会/auth/google重定向到 google 的登录名,并且在收到权限时,会将 google 个人资料和令牌发送到 callback /auth/google/callback。
现在我正在制作一个想要使用此 API 进行身份验证的 android 应用程序。我正在使用集成 Google Sign-In的说明在 google 端进行身份验证。现在我的 android 应用程序有配置文件和令牌,并想用我的服务器验证它。
我试过用passport-google-token和passport-google-id-token(不确定区别......)来做这件事,但无论出于何种原因它都不起作用。现在我正在寻找其他可能性,例如 node.js 的 Google 客户端 API 库,但它看起来很笨重。然后是 tokeninfo 端点,它涉及额外的请求和更多的延迟。或者我应该看看express-jwt?
突然间,我想知道......我不能将令牌从我的 android 应用程序传递到服务器auth/google/callback吗?那会让事情变得简单一些。我认为这一定是一个白日梦,因为我还没有找到任何关于这样做的信息。但是如果可能的话,我应该如何格式化请求中的令牌/配置文件数据,以便passport.authenticate()方法识别它?(JSON,表单数据,标题)
如果无法做到这一点,我正在为节点提供有据可查的令牌验证库的建议......
我仍然不知道如何重用该google-passport-oauth2路线,但我确实弄清楚了如何使用passport-google-id-token验证Google的idToken。
文档说:
对此路由的 post 请求应包含一个 JSON 对象,其密钥 id_token 设置为客户端从 Google 收到的密钥(例如,在 Google+ 成功登录后)。
但它仅在作为查询字符串发送时才有效(GET 或 POST 有效)。
https://localhost:8888/auth/googletoken?id_token=xxxxxxxxxx
我感觉这不是最安全的方法,但我稍后必须处理这个问题。
编辑:事实证明,如果没有客户端 ID(在您的应用程序中),令牌就毫无用处,因此可以通过查询字符串发送它。
编辑 2:一位google-id-token开发人员提醒我body-parser,只有安装后 才会收到 JSON 。
| 归档时间: |
|
| 查看次数: |
3085 次 |
| 最近记录: |