Node.js ";对",;从移动客户端执行oAuth的方法
我正在构建一个跨平台的移动应用程序(使用Xamarian工具,MonoTouch/MonoDroid)。我正在尝试完成身份验证工作流,但遇到了一个绊脚石。我到处寻找一个明确的答案,但还没有找到 下面是我当前设置的概述 我有一个内置nodejs的网站。 我使用passport.js在网站上进行oAuth登录。这非常有效,用户可以使用Twitter或Facebook登录到我的网站 现在我想将同样的登录功能扩展到我的移动客户端 我有两个选择Node.js ";对",;从移动客户端执行oAuth的方法,node.js,oauth,xamarin.ios,xamarin.android,passport.js,Node.js,Oauth,Xamarin.ios,Xamarin.android,Passport.js,我正在构建一个跨平台的移动应用程序(使用Xamarian工具,MonoTouch/MonoDroid)。我正在尝试完成身份验证工作流,但遇到了一个绊脚石。我到处寻找一个明确的答案,但还没有找到 下面是我当前设置的概述 我有一个内置nodejs的网站。 我使用passport.js在网站上进行oAuth登录。这非常有效,用户可以使用Twitter或Facebook登录到我的网站 现在我想将同样的登录功能扩展到我的移动客户端 我有两个选择 将应用程序id和应用程序机密嵌入移动客户端,并从移动应用程序
http://mysever/auth/twitter
还是我做错了?在iOS和Android上为Xamarin实现oauth最简单的方法是使用。客户机的初学者文档是。我认为它应该安全地维护所有内容,您不必担心必须将节点服务器用作代理 您需要在调用中提供您的应用程序ID,但我不认为有太多或任何安全问题需要担心
我知道这与您已经实现的相反,但这可能有助于简化一些事情。这与我一直在处理的难题相同。 这就是我目前的处理方式。 在我的应用程序中,客户端可以直接访问,也可以通过其他服务访问,比如facebook,这是我的主要应用程序,也是我一直关注的应用程序 Facebook可以通过POST(桌面应用)或GET(手机)重定向 我检查初始请求,看看是否有服务标识符——这里是facebook GET示例
app.get('/', function(req, res) {
var paraUrl = URL.parse(req.url,true).query;
//The fb_source is shown -
//i need to go striaght to the facebook authorization since
//its coming from
//from a mobile device.
if (paraUrl.fb_source){
res.redirect('/auth/facebook'); //this is the passport part
return;
}
res.sendfile('index.html');
}
facebook的帖子稍有不同,你可以在base64url中获得一个访问令牌编码。GET给了你一个代码,你可以用它交换一个访问令牌,但我有问题,只是选择了绑定到passport系统
如果客户端直接访问,我会检查会话或与本地策略关联的加密cookie。然后检查db是否有访问令牌,例如,该令牌可用于访问facebook api
app.get('/', function(req, res) {
var paraUrl = URL.parse(req.url,true).query;
//The fb_source is shown -
//i need to go striaght to the facebook authorization since
//its coming from
//from a mobile device.
if (paraUrl.fb_source){
res.redirect('/auth/facebook'); //this is the passport part
return;
}
res.sendfile('index.html');
}
如果客户无法识别,他们可以选择通过facebook、google等进行身份验证
主要的是,客户端只存储了两条信息:passport会话id和my app用户id
connect.sid-加密cookie
用户ID-加密cookie
我很想知道其他人是如何处理这个问题的有趣的是,我还没见过这个图书馆。谢谢你的链接。看起来这与RestSharp提供的基本相同(这实际上是我的选项1)。对于oAuth1(Twitter),我认为这意味着我必须将我的应用程序机密嵌入到移动部署包中,对吗?啊,是的,RestSharp具有相同的OAuth功能。对于OAuth1,没有太多好的选择。要么嵌入,要么使用代理,就像你开始做的那样。如果你嵌入了密钥,你可能会混淆密钥或者试图将它们存储在一个安全的位置,但是不能保证它们不会被盗。我认为这篇文章是对这个主题的一个相当好的概述:。是的,我读了那个帖子。但确实没有一个解决方案。除了说oAuth不是客户端应用程序的正确解决方案之外。我越来越认为,仅仅在oAuth上下赌注是移动应用程序的更好解决方案。我认为OAuth2是可行的,但是对于客户来说