对于一个项目,我实施了OTP第二因素验证。一切正常,我能够为加密种子生成QRcode,在Androïd智能手机上阅读,并使用6位生成的代码在我的应用程序中进行身份验证。 我读到FreeOTP的v1.5现在支持为每个服务添加一个图像,引用:
在Android上,我们发布了一个主要版本,它带来了许多新功能和UI改进。其中最大的是图像支持。可以为每个令牌选择图像。还可以通过未记录的OTP URI查询参数将图像配置到设备。
我看到一些服务确实成功为其服务添加了一个图像(例如OVH),但找不到正确的URI语法来执行此操作... 更确切地说,我不是要求在FreeOTP应用程序中手动将图像添加到令牌的方法,我正在寻找正确的URI来生成理想情况下包含要显示的图像的链接的QRCode。我很确定我从未手动为OVH添加图像。
答案 0 :(得分:0)
参考您要在FreeOTP中使用的图像生成QR码的正确URI包含一个指向其公共位置的查询字符串参数:
...&image=http<s>://<image-path>
图片应为.png。完全符合路径和协议。
将此添加到已为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 it:
otpauth%3A%2F%2Ftotp%2FGoogle%3ASampleName%3FMQ2TQNLEGMYTMOBXGY3Q%26issuer%3DGoogle%26image%3Dhttp%3A%2F%2Fgoogle.com%2Fimage%2Flogo.png
然后根据需要生成QR码。例如,Google Chart 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规范的一部分,尽管它应该是。