国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

兩步驗(yàn)證殺手锏:Java 接入 Google 身份驗(yàn)證器實(shí)戰(zhàn)

W4n9Hu1 / 2036人閱讀

摘要:的身份驗(yàn)證器一般也是用于登錄進(jìn)行兩步驗(yàn)證,和蘋果的兩步驗(yàn)證是同樣的道理。只不過的身份驗(yàn)證器用得更多更廣泛,如的兩步驗(yàn)證都是基于身份驗(yàn)證器。使用我們來看下上的使用身份驗(yàn)證器開啟兩步驗(yàn)證的應(yīng)用。

兩步驗(yàn)證

大家應(yīng)該對(duì)兩步驗(yàn)證都熟悉吧?如蘋果有自帶的兩步驗(yàn)證策略,防止用戶賬號(hào)密碼被盜而鎖定手機(jī)進(jìn)行敲詐,這種例子屢見不鮮,所以蘋果都建議大家開啟兩步驗(yàn)證的。

Google 的身份驗(yàn)證器一般也是用于登錄進(jìn)行兩步驗(yàn)證,和蘋果的兩步驗(yàn)證是同樣的道理。只不過 Google 的身份驗(yàn)證器用得更多更廣泛,如 GitHub 的兩步驗(yàn)證都是基于 Google 身份驗(yàn)證器。

Google Authenticator 簡介

Google Authenticator 身份驗(yàn)證器是一款基于時(shí)間與哈希的一次性密碼算法的兩步驗(yàn)證軟件令牌,用戶需要下載手機(jī) APP(Authenticator),該手機(jī) APP 與網(wǎng)站進(jìn)行綁定,當(dāng)網(wǎng)站驗(yàn)證完用戶名和密碼之后會(huì)驗(yàn)證此 APP 上對(duì)應(yīng)生成的 6 位驗(yàn)證碼數(shù)字,驗(yàn)證通過則成功登錄,否則登錄失敗。

Google Authenticator 使用

我們來看下 Github 上的使用 Google 身份驗(yàn)證器開啟兩步驗(yàn)證的應(yīng)用。

如圖所示,默認(rèn) Github 是沒有開啟兩步驗(yàn)證的,點(diǎn)擊設(shè)置按鈕進(jìn)行設(shè)置。

Github 提供了基于 APP (谷歌身份驗(yàn)證器)和短信驗(yàn)證碼兩種兩步驗(yàn)證的方式,我們選擇第一種谷歌身份驗(yàn)證器。

進(jìn)入第一種驗(yàn)證模式,接下來展示了一堆的恢復(fù)碼,用來當(dāng) APP 驗(yàn)證器不能工作的緊急情況使用。把它們保存起來,然后點(diǎn)擊下一步。

這個(gè)就是身份驗(yàn)證器的關(guān)鍵了,下載 Google 的 Authenticator APP,然后掃描這個(gè)二維碼進(jìn)行綁定。

綁定之后,APP Github 模塊下面會(huì)顯示一個(gè) 6 位的驗(yàn)證碼,把它輸入到上面那個(gè)框里面就行了。

如下圖所示,已經(jīng)成功開啟兩步驗(yàn)證了。

接下來我們退出 Github 再重新登錄,頁面就會(huì)提示要輸入 Google 的身份驗(yàn)證器驗(yàn)證碼了,如果 APP 不能正常工作,最下方還能通過之前保存下來的恢復(fù)碼進(jìn)行登錄。

好了,Google Authenticator 使用就到這里,那它是如何工作的,它是什么原理呢?我們的網(wǎng)站、APP 如何接入 Google Authenticator,接下來我們一一拉開謎底。

Google Authenticator 工作流程

實(shí)際上 Google Authenticator 采用的是 TOTP 算法(Time-Based One-Time Password,即基于時(shí)間的一次性密碼),其核心內(nèi)容包括以下三點(diǎn)。

1、安全密鑰

是客戶端和服務(wù)端約定的安全密鑰,也是手機(jī)端 APP 身份驗(yàn)證器綁定(手機(jī)端通過掃描或者手輸安全密鑰進(jìn)行綁定)和驗(yàn)證碼的驗(yàn)證都需要的一個(gè)唯一的安全密鑰,該密鑰由加密算法生成,并最后由 Base32 編碼而成。

2、驗(yàn)證時(shí)間

Google 選擇了 30 秒作為時(shí)間片,T的數(shù)值為 從Unix epoch(1970年1月1日 00:00:00)來經(jīng)歷的 30 秒的個(gè)數(shù),所以在 Google Authenticator 中我們可以看見驗(yàn)證碼每個(gè) 30 秒就會(huì)刷新一次。

更詳細(xì)原理參考:

https://blog.seetee.me/post/2...

3、簽署算法

Google 使用的是 HMAC-SHA1 算法,全稱是:Hash-based message authentication code(哈希運(yùn)算消息認(rèn)證碼),它是以一個(gè)密鑰和一個(gè)消息為輸入,生成一個(gè)消息摘要作為輸出,這里以 SHA1 算法作為消息輸入。

使用 HMAC 算法是因?yàn)橹挥杏脩舯旧碇勒_的輸入密鑰,因此會(huì)得到唯一的輸出,其算法可以簡單表示為:

hmac = SHA1(secret + SHA1(secret + input))

事實(shí)上,TOTP 是 HMAC-OTP(基于HMAC的一次密碼生成)的超集,區(qū)別是 TOTP 是以當(dāng)前時(shí)間作為輸入,而HMAC-OTP 則是以自增計(jì)算器作為輸入,該計(jì)數(shù)器使用時(shí)需要進(jìn)行同步。

Google Authenticator 實(shí)戰(zhàn)

知道上面的原理,我們就可以來應(yīng)用實(shí)戰(zhàn)了。

/**
 * 微信公眾號(hào):Java技術(shù)棧
 */
public class AuthTest {

    @Test
    public void genSecretTest() {
        String secret = GoogleAuthenticator.generateSecretKey();
        String qrcode = GoogleAuthenticator.getQRBarcodeURL("Java技術(shù)棧", "javastack.cn", secret);
        System.out.println("二維碼地址:" + qrcode);
        System.out.println("密鑰:" + secret);
    }

    @Test
    public void verifyTest() {
        String secret = "ZJTAQGLVOZ7ATWH2";
        long code = 956235;
        GoogleAuthenticator ga = new GoogleAuthenticator();
        boolean r = ga.verifCode(secret, code);
        System.out.println("是否正確:" + r);
    }
}

第一個(gè)方法是生成密鑰和一個(gè)掃描二維碼綁定的URL。

第二個(gè)方法是根據(jù)密鑰和驗(yàn)證碼進(jìn)行驗(yàn)證。

這里僅提供一下 GoogleAuthenticator 類的源碼邏輯參考。

http://awtqty-zhang.iteye.com...

如果有收獲歡迎點(diǎn)贊轉(zhuǎn)發(fā),也可以留言發(fā)表你的疑問和看法。

教程:史上最強(qiáng) Spring Boot & Cloud 教程匯總

工具:推薦一款在線創(chuàng)作流程圖、思維導(dǎo)圖軟件

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/76819.html

相關(guān)文章

  • Spring Security

    摘要:框架具有輕便,開源的優(yōu)點(diǎn),所以本譯見構(gòu)建用戶管理微服務(wù)五使用令牌和來實(shí)現(xiàn)身份驗(yàn)證往期譯見系列文章在賬號(hào)分享中持續(xù)連載,敬請(qǐng)查看在往期譯見系列的文章中,我們已經(jīng)建立了業(yè)務(wù)邏輯數(shù)據(jù)訪問層和前端控制器但是忽略了對(duì)身份進(jìn)行驗(yàn)證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護(hù)REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 評(píng)論0 收藏0
  • 谷歌驗(yàn)證器的原理及實(shí)現(xiàn)

    摘要:閱讀本篇文章你可以了解到谷歌驗(yàn)證器的實(shí)現(xiàn)原理,并且可以自己使用實(shí)現(xiàn)支持谷歌驗(yàn)證器的兩步驗(yàn)證。并且發(fā)現(xiàn),除了的兩步驗(yàn)證之外,其它兩步驗(yàn)證很多能看到谷歌驗(yàn)證器的身影。 showImg(https://segmentfault.com/img/bV6UIW?w=540&h=238); 閱讀本篇文章你可以了解到谷歌驗(yàn)證器的實(shí)現(xiàn)原理,并且可以自己使用node.js實(shí)現(xiàn)支持谷歌驗(yàn)證器的兩步驗(yàn)證。 ...

    Genng 評(píng)論0 收藏0
  • 谷歌驗(yàn)證器的原理及實(shí)現(xiàn)

    摘要:閱讀本篇文章你可以了解到谷歌驗(yàn)證器的實(shí)現(xiàn)原理,并且可以自己使用實(shí)現(xiàn)支持谷歌驗(yàn)證器的兩步驗(yàn)證。并且發(fā)現(xiàn),除了的兩步驗(yàn)證之外,其它兩步驗(yàn)證很多能看到谷歌驗(yàn)證器的身影。 showImg(https://segmentfault.com/img/bV6UIW?w=540&h=238); 閱讀本篇文章你可以了解到谷歌驗(yàn)證器的實(shí)現(xiàn)原理,并且可以自己使用node.js實(shí)現(xiàn)支持谷歌驗(yàn)證器的兩步驗(yàn)證。 ...

    Winer 評(píng)論0 收藏0
  • AI時(shí)代的全鏈路監(jiān)控,阿里工程師怎么做?

    摘要:背景近年來,隨著阿里新業(yè)務(wù)新技術(shù)的快速發(fā)展,傳統(tǒng)的業(yè)務(wù)總量監(jiān)控大盤已經(jīng)越來越不能滿足監(jiān)控需求,主要表現(xiàn)在以下幾個(gè)方面缺乏全局視角監(jiān)控大盤主要反映的是單個(gè)業(yè)務(wù)或應(yīng)用的運(yùn)行狀態(tài),缺少全局的業(yè)務(wù)視角能反應(yīng)整個(gè)業(yè)務(wù)域的上下游整體的運(yùn)行情況。 背景 近年來,隨著阿里新業(yè)務(wù)、新技術(shù)的快速發(fā)展,傳統(tǒng)的業(yè)務(wù)總量監(jiān)控大盤已經(jīng)越來越不能滿足監(jiān)控需求,主要表現(xiàn)在以下幾個(gè)方面: 缺乏全局視角:監(jiān)控大盤主要反映...

    jollywing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<