介绍
灵活的 TOTP我会享受
什么是灵活的 TOTP?
NimbleTOTP 是一个用于双因素身份验证 (2FA) 的小型库,允许开发人员为其应用程序实施基于时间的一次性密码 (TOTP)。
这是两因素身份验证。 (那是什么?
)
究竟什么是双重身份验证?我想知道为什么服务器端和智能手机应用程序的一次性密码匹配。
如果您使用智能手机应用程序(Google Authenticator、Microsoft Authenticator 等)读取二维码,密码将每 30 秒更新一次,您必须在登录时输入。
我知道如何使用它,但它是如何工作的? “我也那么认为。”我会把细节留给别人,但机制相对简单。
在服务器端创建的秘密嵌入在该二维码中,智能手机应用程序将其保存在设备上。
密码是一种算法,如果您有秘密和时间,就可以推导出来。
换句话说,只要您知道秘密,您就可以创建一个随时间变化的密码。
在服务器端,用户帐户和机密是相关联的。
图是excalidraw我用它画了
这是我最近最喜欢的工具。
我发现在
感觉就像是一位才华横溢的开发人员在白板上乱写乱画。回归故事。
用法什么时候lib/nimble_totp.ex我想当你看它时,你会以某种方式理解它。
我不完全了解细节,但我想我可以读到密码随着秘密和时间作为参数而变化。
使用图书馆没有任何不便。
它令人惊讶地简短而令人惊讶。试试看
将身份验证处理与 phx.gen.auth 结合起来——我认为这是直接的方法。
我是一个不正经的人,所以我使用 LiveView 创建了一个类似智能手机应用程序的东西,其中密码会随时更改。这是它的样子。
为了比较,Microsoft Authenticator 的一次性密码加载了相同的秘密,被移动到了屏幕的底部。
(摇摇晃晃,看着就恶心)
我尝试使用android的录制功能拍摄Microsoft Authenticator,但它变黑并且没有包含在视频中。所以我用另一台相机以一种原始的方式拍摄。
秘密是一颗红宝石,mdp/rotp的样本我用
JBSWY3DPEHPK3PXP用在凤凰应用新
做一个项目。
mix phx.new hello编辑
mix.exs。混合.exs- {:plug_cowboy, "~> 2.5"} + {:plug_cowboy, "~> 2.5"}, + {:nimble_totp, "~> 0.1.0"}制作源代码。
lib/hello_web/router.expipe_through :browser get "/", PageController, :index + live "/totp", TotpLive endlib/hello_web/live/totop_live.exdefmodule HelloWeb.TotpLive do use HelloWeb, :live_view def render(assigns) do ~H""" <h1><%= @password %></h1> <%= @remain %> s """ end def mount(_params, _session, socket) do if connected?(socket), do: Process.send_after(self(), :update, 1000) {:ok, update_socket(socket)} end def handle_info(:update, socket) do Process.send_after(self(), :update, 1000) {:noreply, update_socket(socket)} end defp update_socket(socket) do now_one_time_password = Hello.DummyTotp.verification_code() index = 0..30 |> Enum.map(&Hello.DummyTotp.verification_code/1) |> Enum.find_index(&(&1 != now_one_time_password)) socket |> assign( :password, String.slice(now_one_time_password, 0..2) <> " " <> String.slice(now_one_time_password, 3..5) ) |> assign(:remain, index) end endlib/hello/dummy_totp.exdefmodule Hello.DummyTotp do @secret Base.decode32!("JBSWY3DPEHPK3PXP") def verification_code(offset \ 0) do NimbleTOTP.verification_code(@secret, time: System.os_time(:second) + offset) end end剩下的就是下面的命令了。
cd hello mix setup mix phx.server请不要犹豫,移动它。
剩余 3 秒时,此视频最后一个请看一下并一起唱歌。直到“1、2、3 dar!”诞生的轨迹这里进行了详细的总结。
综上所述
灵活的 TOTP享受。
$巨大{1, 2, 3 dar! }$
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630540.html