google-authenticator - Google Authenticator 或 FreeOTP 中的 token 图像

标签 google-authenticator

对于一个项目,我实现了 OTP 第二因素身份验证。一切正常,我能够为加密种子生成二维码,在 Android 智能手机上读取它,并使用生成的 6 位数代码在我的应用程序中进行身份验证。
我读到 FreeOTP 的 v1.5 现在支持向每个服务添加图像,引用:

在 Android 上,我们发布了一个主要版本,它带来了许多新功能和 UI 改进。其中最大的是图像支持。可以为每个 token 选择图像。图像也可以通过未记录的 OTP URI 查询参数提供给设备。

我看到某些服务确实成功地为其服务添加了图像(例如 OVH),但找不到正确的 URI 语法来执行此操作......
更准确地说,我并不是要求在 FreeOTP 应用程序中手动将图像添加到 token 中的方法,我正在寻找正确的 URI 来生成 QRCode,该 QRCode 理想情况下包含指向要显示的图像的链接。我很确定我从未为 OVH 手动添加图像。

最佳答案

引用您要在 FreeOTP 中使用的图像生成 QR 码的正确 URI 包括一个指向其公开可用位置的查询字符串参数:

...&image=http<s>://<image-path>

图片应为 .png。完全限定路径和协议(protocol)。

将此添加到已为 QR 码创建的现有字符串中。在生成 QR 码之前,您必须对整个字符串进行 UrlEncode。

为清楚起见,urlencoding 之前的数据格式应为:
otpauth://totp/(<issuer>:)<accountnospaces>?secret=xxxxxxxxxx(&issuer=<issuer>)(&image=<imageuri>)

括号表示可选元素。例如:
otpauth://totp/Google:SampleName?MQ2TQNLEGMYTMOBXGY3Q&issuer=Google&image=http://google.com/image/logo.png

然后你对其进行urlencode:
otpauth%3A%2F%2Ftotp%2FGoogle%3ASampleName%3FMQ2TQNLEGMYTMOBXGY3Q%26issuer%3DGoogle%26image%3Dhttp%3A%2F%2Fgoogle.com%2Fimage%2Flogo.png

然后你生成一个你喜欢的二维码。例如,谷歌图表 API:
https://chart.googleapis.com/chart?cht=qr&chs=400x400&chl=otpauth%3A%2F%2Ftotp%2FGoogle%3ASampleName%3FMQ2TQNLEGMYTMOBXGY3Q%26issuer%3DGoogle%26image%3Dhttp%3A%2F%2Fgoogle.com%2Fimage%2Flogo.png

虽然 FreeOTP 支持此功能,但其他应用程序不支持。它不是 TOTP 规范的一部分,尽管它应该是。

关于google-authenticator - Google Authenticator 或 FreeOTP 中的 token 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232168/

相关文章:

ssh - 启用 SSH 两因素身份验证,但仅适用于 root 用户

c# - 两因素谷歌身份验证与服务器上的代码不匹配 - ASP.Net MVC

android - 谷歌验证器刮刮码

authentication - Google Authenticator - 缺少 otpauth 协议(protocol)参数

c++ - 我如何测试我的谷歌验证器的实现?

用于谷歌身份 validator 的 Java API

oauth - 如何在自定义非Google登录网络应用中使用GoogleAuthenticator进行tfa(两因素身份验证)

perl - Perl 中的 Google 身份验证器实现

node.js - 我必须使用哪些数据才能为 Google Authenticator 生成二维码?

Android 谷歌身份验证登录 handleSignInResult :false