轉(zhuǎn)載自金湯智庫:?使用JANUSEC應(yīng)用網(wǎng)關(guān)給內(nèi)部網(wǎng)站添加身份認(rèn)證
一些企業(yè)內(nèi)部管理網(wǎng)站,往往為了快速上線,沒有做身份認(rèn)證,這就給內(nèi)部數(shù)據(jù)泄露帶來了很大的風(fēng)險(xiǎn)。但是,要想修復(fù)這個(gè)問題,卻不是那么容易,有可能開發(fā)這個(gè)網(wǎng)站的同事早就轉(zhuǎn)崗或離職了。
為了解決這個(gè)問題,《數(shù)據(jù)安全架構(gòu)設(shè)計(jì)與實(shí)戰(zhàn)》一書提出了在應(yīng)用網(wǎng)關(guān)統(tǒng)一執(zhí)行身份認(rèn)證,并在后端限制訪問來源,快速解決這些沒有身份認(rèn)證的問題。

現(xiàn)在,這一理念已在Janusec Application Gateway中落地,支持員工使用企業(yè)微信、釘釘、飛書 掃碼登錄原來可任意訪問的內(nèi)部網(wǎng)站了。
1 配置OAuth2
在Janusec Application Gateway的應(yīng)用配置界面,勾選啟用OAuth2選項(xiàng)。
具體配置,參考:OAuth2身份認(rèn)證
2 應(yīng)用如何獲取用戶身份
Janusec認(rèn)證通過后,會(huì)在HTTP請(qǐng)求的頭部添加兩行:
Authorization: Bearer Access-Token
X-Auth-User: UserID
應(yīng)用不需要修改即可使用,也可以通過X-Auth-User獲取用戶身份(企業(yè)微信/釘釘/飛書),或者借助Access-Token(企業(yè)微信/飛書)獲取進(jìn)一步的信息。
3 驗(yàn)證演示
以配置的某個(gè)PHP應(yīng)用下,放一個(gè)http.php文件,內(nèi)容為:
<?php
$headers =array();
foreach($_SERVERas$key => $value) {
? ? if('HTTP_'== substr($key,0,5)) {? ? ? ??
? ? ? ? $headers[str_replace('_','-', substr($key,5))] = $value;? ??
? ? }
}
echo'<pre>';
print_r($headers);
?>
在Janusec Application Gateway的應(yīng)用管理中,勾選"Enable OAuth2",啟用OAuth2 。
訪問該http.php頁面,瀏覽器自動(dòng)跳轉(zhuǎn)到掃碼登錄頁面,掃碼通過后,即可查看到該網(wǎng)頁的輸出:
Array
(
? ? [HOST] => test.janusec.com
? ? [USER-AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
? ? [ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
? ? [ACCEPT-ENCODING] => gzip, deflate, br
? ? [ACCEPT-LANGUAGE] => zh-CN,zh;q=0.9
? ? [AUTHORIZATION] => Bearer hmaEIdtA_EigLd0q6s1grFMuspVTCme8PEU4SkSeWJAv06Rg6u_PWUdU2g
? ? [COOKIE] => uqcJ_2132_saltkey=r55x3tp5; uqcJ_2132_lastvisit=1582979664; janusec-token=MTU4NTQ1Nzc3NnxEdi1CQkFFQ180SUFBUkFCRUFBQV9_
? ? [X-AUTH-USER] => U2
? ? [X-FORWARDED-FOR] => 192.168.100.1
)
可以看到,已添加HTTP頭部:
Authorization: Bearer hmaEIdtA_EigLd0q6s1grFMuspVTCme8PEU4SkSeWJAv06Rg6u_PWUdU2g
X-Auth-User: U2
后端的網(wǎng)站,可以不用任何修改,就獲得了需要通過身份認(rèn)證才能訪問的效果。
同時(shí),后端網(wǎng)站也可以直接使用HTTP頭部傳遞過來的身份信息。
4 退出OAuth2登錄
后端網(wǎng)站只需要添加一個(gè)退出鏈接 /oauth/logout ,即可實(shí)現(xiàn)退出效果。