是否应该加密Twitter和Facebook等服务的访问令牌?特别是,应该将令牌存储在设备的Keychain vs. UserDefaults中吗?如果用户的设备被盗/被占用,可能会出现哪些安全问题
这是我到目前为止所提出的.
钥匙串的优点: 加密
缺点:用户删除应用时无法清理
UserDefaults的优点: 保留在应用程序内部.
缺点:没有加密.
我有一个使用基于令牌的身份验证的网站.首先,发送用户名和密码以记录用户并接收令牌.对于后续调用,我需要X-Auth-Token在HTTP头中包含令牌.
我想知道如何做到这一点,在vanilla JavaScript或使用jQuery.你能给我一个代码示例吗?
最近我听说Twitter将关闭Twitter API上的基本身份验证,然后他们转向OAuth.
所以我想知道BasicAuth,OAuth和XAuth之间有什么区别?
每个Auth的优点和缺点是什么?
存在这个问题的变体,但我似乎无法理解某些东西.
如果您在ICS/4.0中的功能结束时阅读,请注意
企业还可以利用平台内置的标准VPN客户端来访问L2TP和IPSec协议.
我的假设是,因为它不在"开发人员"部分下,所以我们没有获得除VpnService API之外的开发人员API访问.我看过ToyVPN,这只是无用的,因为我需要一个真正的IPSec IKEv1 XAuth连接来连接到企业防火墙.
我找到了几个需要root和VPNCilla的解决方案,虽然我没有能够成功建立连接但显然没有.
这是否意味着除非我们在Java中实现协议或使用NDK(如StrongSwan与IKEv2一样),否则实际上无法以编程方式为IPSec IKEv1 XAuth网关/防火墙创建配置文件或连接到IPSec IKEv1 XAuth网关/防火墙?
我正在尝试使用python-oauth2为instapaper实现xauth.我能找到oauth的样本,但我没有找到任何xauth.有人可以共享样本或api文档吗?
我今天大部分时间都在尝试实施Instapaper的XAuth API.我还没有得到一个oauth令牌.
我有什么想法我做错了吗?
我正在使用node.js和oauth模块.我的理解是我需要将用户名,密码,amd模式作为额外参数传递.而oauth模块应该处理所有的oauth参数.但事实并非如此.这是代码:
var OAuth = require('oauth').OAuth;
var oauth = new OAuth(
'',
'https://www.instapaper.com/api/1/oauth/access_token',
'CONSUMER_KEY',
'CONSUMER_SECRET',
'1.0',
null,
'HMAC-SHA1',
null
);
var extra = {
'x_auth_username': 'USERNAME',
'x_auth_password': 'PASSWORD',
'x_auth_mode': 'client_auth'
};
var hello = oauth._prepareParameters('', '', 'POST', 'https://www.instapaper.com/api/1/oauth/access_token', null);
var url = 'https://www.instapaper.com/api/1/oauth/access_token';
var f = true;
for (var i in hello) {
if (f) {
url += '?';
f = false;
} else {
url += '&';
}
url += hello[i][0] + '=' + hello[i][1];
}
console.log(url+'&x_auth_mode=client_auth&x_auth_username=&x_auth_password=') …Run Code Online (Sandbox Code Playgroud) Android:我正在为android共享尝试以下xAuth示例.
System.setProperty("twitter4j.oauth.consumerKey", "your token");
System.setProperty("twitter4j.oauth.consumerSecret", "your token secret");
Twitter twitter = new TwitterFactory().getInstance(login, password);
AccessToken accessToken = twitter.getOAuthAccessToken();
//Then you must save your Token and Token secret from AccesToken
if (mAccessToken != null) {
if (mAccessToken.getToken() != null && mAccessToken.getTokenSecret() != null) {
saveAccessToken(mAccessToken.getToken(), mAccessToken.getTokenSecret());
}
}
Run Code Online (Sandbox Code Playgroud)
我有IllegalStateException
Exception Msg: java.lang.IllegalStateException: OAuth consumer key/secret combination not supplied
在以下行
AccessToken accessToken = twitter.getOAuthAccessToken();
Run Code Online (Sandbox Code Playgroud)
我做了一些更改,如下所示
Twitter twitter = new TwitterFactory().getInstance("login", "pass");
twitter.setOAuthConsumer(getString(R.string.twtAPIKey), getString(R.string.twtSecret));
AccessToken mAccessToken = twitter.getOAuthAccessToken();
Run Code Online (Sandbox Code Playgroud)
我又得到了例外
Exception Msg: java.lang.IllegalStateException: …
我花了最近几天才开始运行OAuth.不是在Android上,而是在我的网络服务器上,它将充当OAuth保护服务的代理.我正准备实施我的Android客户端,我的头脑仍然在讨论安全性和实施问题.
当客户端只是一个Web浏览器时,OAuth就足够混乱了.您有以下一系列步骤:
现在这已经足够了.但是当使用与移动应用程序相同的机制作为客户端时,它会更加复杂.问题当然是你必须做一些杂技,以便在进行OAuth舞蹈时将浏览器会话注入到移动应用程序的代码流中.这意味着你必须进一步复杂化OAuth舞蹈如下(我在这个例子中使用Android应用程序来使事情具体化):
你可以看到这很可怕.如果有一个更简单的方法,那么我渴望听到它.据我所知,只有两个其他选择,每个都有自己的重大问题.
1)忘记代理服务器并直接从移动Web应用程序执行所有操作.这里最大的安全漏洞就是你必须在你的OAuth消费者密钥中"烘焙"并秘密进入你的应用程序.如果攻击者对您的代码进行反编译并搜索这些字符串,对于具有逆向工程经验的人来说,这是一个相当简单的操作,它们会对您的应用程序和用户造成严重破坏.
2)切换到XAuth,用户在那里向您提供他们的登录名和密码,并且您"同意"不存储它们并直接与XAuth服务器交换访问令牌.第一个问题是获得用户信任以提供该信息,创建OAuth以解决问题,当然还有那些不履行其放弃登录详细信息的承诺的人呢?更糟糕的是,XAuth服务器必须支持XAuth并提供HTTPS(SSL)连接,而且我已经看到大量不支持的Web API.当然,SSL连接是必要的,因为在没有它的情况下,您在发出XAuth请求时会以纯文本形式通过网络发送用户的登录名和密码.
http://blog.zyber17.com/post/1283741364/why-xauth-is-a-really-dumb-idea
仅供参考,虽然它不使用代理服务器,但以下示例说明了我将上述用于将浏览器会话注入您的移动应用OAuth交互并拦截回调URI的技术:
http://blog.doityourselfandroid.com/2010/11/10/oauth-flow-in-android-app/
所以你看它看起来很丑陋,我甚至没有为用户创建和管理你自己的用户ID而烦恼,这样你就可以正确查找存储在代理Web服务器上的访问权限(包括一个PIN或访问代码的混乱,供用户管理).
有趣的注意事项:在对Android网络浏览器会话安全性进行一些研究时,我很高兴地发现您不能访问当前的网页HTML.如果您可以访问它,那么恶意的Android编码器可以轻松地嗅出用户的登录名和密码,从而完全破坏OAuth的目的和意图.我很沮丧地发现可能有办法通过CacheManager对象获取HTML.奇怪的是,该对象现在已被弃用,并根据Android文档计划删除,因此希望这意味着Google发现了(潜在的)安全漏洞并正在采取措施在即将发布的版本中将其删除:
http://developer.android.com/reference/android/webkit/CacheManager.html
最后,我想听听那些在创建OAuth应用程序时遇到这些相同问题的人的想法.
- roschler
我需要更改.Xauthority一组用户的文件位置$HOME/tmp/.Xauthority而不是默认值$HOME/.Xauthority.
我已经尝试过从以下几个方面赶上来的东西:
我这样设置环境变量几个/etc/.profile,.profile,.bashrc...等具有以下内容:XAUTHORITY=$HOME/tmp/.Xauthority
结果如下:
对sshx group(ssh -X server)用户的任何登录尝试都会导致锁定超时$HOME/.Xauthority.这就像没有改变任何东西.有趣的是,如果我echo $XAUTHORITY显示$HOME/tmp/.Xauthority.authx正在运作,但在登录时却没有.
因此,我需要的处理必须ssh -X在建立X连接之前或同时发生.我在哪里必须更改它,以便我只能解决一组用户,因为我不希望root或没有sshX组的用户受到影响,因为他们最终没有该目录?
我想从GMail获取oauth或xauth令牌以与gmail-oauth一起使用.我正在考虑使用OmniAuth,但它似乎还不支持GMail,这意味着有了OmniAuth库存是不可能的.那是对的吗?我错过了什么吗?