我已经使用duosecurity为ssh启用了双因素身份验证(使用此playbook https://github.com/CoffeeAndCode/ansible-duo).
如何使用ansible立即管理服务器.由于这个原因,SSH调用在收集事实时失败.我希望运行剧本的人在播放剧本之前输入两个因子代码.
为部署用户禁用两个因素是一种可能的解决方案,但会产生一个安全问题,我希望避免这种问题.
我目前没有可用的移动设备,但需要切换到 GitHub 的 2FA。
我目前知道的唯一方法是购买 Skype 电话号码并将其用于 SMS 身份验证。但这需要花钱,而且存在我不小心让订阅失效的风险。
是否有不需要移动设备或有效电话号码的免费身份验证方法?
我在这里和其他地方读过很多关于使用cookie来"记住我"的选项,但我正在寻找的是一种设计cookie以记录双因素身份验证成功的方法.例如,Google就是这样做的:如果第二步成功(例如,您输入了通过SMS收到的代码),那么它会在一段时间(例如30天)内设置好cookie,这意味着第二步可以绕过.将此称为"验证Cookie".我的理解是,如果在那个时候你注销然后再次注册,它将不会执行第二步,而只会执行第一步.(我测试了这个,似乎就是这种情况.)
我的问题是如何设计这个cookie.一种想法是将用户ID和128位随机数放入cookie中,然后将该数字与用户ID一起存储在数据库中.这就是Charles Miller建议的(http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/)持久登录cookie.
但是,我觉得这还不够好.问题在于,由于用户使用双因素授权,无论使用哪种cookie来记录第二步成功,都应该比单因素授权的情况更安全.
我想要避免的是:破解者从数据库中获得了哈希/盐渍密码,并以某种方式获得了密码.如果他/她有这么多,我认为验证cookie中的128位随机数也是可用的.(如果破解者以其他方式获得了密码,并且没有数据库,那么验证cookie是安全的,除非他/她具有对计算机的物理访问权限.我只担心受损的数据库案例.)
也许一个想法是加密128位随机数?(需要是双向的 - 不是散列.)应用程序可以访问加密密钥,但是可以存储数据库凭据.
有没有人实现我所谓的验证cookie(不是持久登录cookie),并告诉我(我们)它是如何完成的?
更新:考虑到这一点,我认为足够安全的是:Cookie由userID和128位随机数组成 - 称之为R.
数据库包含密码和R,每个都经过哈希和盐化(例如,使用PhPass).然后,R被认为是第二个密码.好处:即使第一个密码不好(例如"password1"),R也是一个非常好的密码.数据库确实无法破解,所以不应该担心.(我想,我不必担心它.)
有没有办法在Shiro中实现多因素身份验证?有人能给我一个如何实现这一点的提示吗?
有关更多详细信息:基本思想是,用户需要像往常一样使用用户名和密码登录,但在进行实际身份验证之前,用户还需要输入他作为SMS收到的一次性令牌.
谢谢!
我想在我的 PHP 项目中使用 Google 2FA。用户需要在登录时输入 6 位 2fa 代码。
你能画出一些关于采取哪个方向的提示吗?
我的Github帐户启用了两个因子授权(2fa).我想将Jenkins与我的一些私有存储库集成,但我无法授权它们因为我启用了2fa.请注意,这是一个多分支管道项目.
我的网络应用程序中有一个要求,我需要使用他们的电话号码而不是电子邮件和密码注册用户.
系统应该输入用户的电话号码并向该电话号码发送OTP短信.如果OTP匹配,我需要创建用户.
我尝试使用asp.net身份2FA,但只有在用户已经注册并且用户表中更新了电话号码时才能使用.
有人可以帮助我.
提前致谢.
塔拉克
我目前正在Yesod 1.4.5中构建一个个人网站,目前我正在实施身份验证.使用用户名和密码进行身份验证非常简单 - 我使用Yesod.Auth.HashDB - 但由于我非常注重安全性,所以我还想要第二个因素.
Yesod.Auth是否支持多因素身份验证?它肯定支持多个auth插件,但据我所知,这些插件似乎被视为替代身份验证方法而不是其他强制身份验证因素.可以通过某种方式组合auth插件,在HashDB周围"包装"MFA插件吗?在消息来源中似乎没有这方面的功能.
如果这确实不受支持,我如何才能从外部扩展Yesod.Auth以添加MFA?扩展有状态的Haskell包很难,我可以使用一些提示.
理想情况下,我想支持U2F安全密钥和TOTP代码,但只支持后者仍然会非常好.
authentication haskell one-time-password yesod two-factor-authentication
在 Google Authenticator 应用中,您可以扫描二维码或手动输入颁发者提供的密钥。
在下面的屏幕截图中,您可以看到Google安全设置中2FA的设置,显示了如何按照第二种方法获取TOTP。
我的问题是:这个密钥是如何生成的?
我正在尝试为我的网站使用 Google Authenticator 支持 2FA,我发现了许多有关如何生成 QR 码的参考资料和文档,但没有提到替代方法。
编辑:
更清楚地说,我在 Grails 3 Web 应用程序中使用 Google Authenticator 支持 2FA。我已经通过为每个用户生成一个密钥(Base32字符串)、提供一个二维码供用户扫描以及在登录时验证 TOTP 来实现整个用户流程。我用作依赖项:
org.jboss.aerogear:aerogear-otp-java, aerogear OTP可根据 GA 的 TOTP 方便地验证用户密钥org.grails.plugins:qrcode, qrcode Grails 插件生成二维码我的问题是关于在 Google Authenticator 应用程序中添加新条目的 2 种方法: 1. 扫描二维码(我这边一切正常) 2. 手动输入帐户名称和字母代码(在我的第一个屏幕截图中,代码是在 Google 安全设置中提供)
您可以看到 Android 版 GA 的说明性屏幕截图:
我如何生成并向fzee用户提供这样的代码(从第一个屏幕截图开始,并在第二个屏幕截图中命名为“提供的密钥”)?我确信它是在 QR 码中编码的相同数据字符串的编码,但我不知道是哪个(不仅仅是Base32)。
qr-code one-time-password google-authenticator two-factor-authentication totp
我一直在尝试使用自定义表单和视图来实现带有qrcode的django-otp。问题是我有点不明白我的实现是否正确。由于文档指出向已通过 OTP 验证的用户添加了一个属性,因此我实际上无法正确设置。已使用 Microsoft Authenticator 应用程序通过 QR 码设置为用户创建了已确认的 TOTP 设备。request.user.is_verified()
我能够成功实施默认的管理站点 OTP 验证,没有任何问题。以下是自定义实现的文件。
网址.py
from django.conf.urls import url
from account.views import AccountLoginView, AccountHomeView, AccountLogoutView
urlpatterns = [
url(r'^login/$', AccountLoginView.as_view(), name='account-login',),
url(r'^home/$', AccountHomeView.as_view(), name='account-home',),
url(r'^logout/$', AccountLogoutView.as_view(), name='account-logout',)
]
Run Code Online (Sandbox Code Playgroud)
视图.py
from django.contrib.auth import authenticate, login as auth_login
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView
from django_otp.forms import OTPAuthenticationForm
class AccountLoginView(FormView):
template_name = 'login.html'
form_class = OTPAuthenticationForm
success_url = '/account/home/'
def form_invalid(self, form):
return super().form_invalid(form)
def form_valid(self, …Run Code Online (Sandbox Code Playgroud)