快速给内部网站添加身份认证

2022-06-02 16:01:57 浏览数 (1)

一些企业内部管理网站,往往为了快速上线,没有做身份认证,这就给内部数据泄露带来了很大的风险。但是,要想修复这个问题,却不是那么容易,有可能开发这个网站的同事早就转岗或离职了。

为了解决这个问题,《数据安全架构设计与实战》一书提出了在应用网关统一执行身份认证,并在后端限制访问来源,快速解决这些没有身份认证的问题。

在接入网关上执行身份认证

现在,这一理念已在Janusec Application Gateway中落地,支持员工扫码登录原来可任意访问的内部网站了。

目前支持的扫码登录APP包括:企业微信、钉钉、飞书 。

1 配置OAuth2

在Janusec Application Gateway的应用配置界面,勾选启用OAuth2选项。

具体配置,参考:OAuth2身份认证

2 应用如何获取用户身份

Janusec认证通过后,会在HTTP请求的头部添加两行:

代码语言:javascript复制
Authorization: Bearer Access-Token
X-Auth-User: UserID

应用不需要修改即可使用,也可以通过X-Auth-User获取用户身份(企业微信/钉钉/飞书),或者借助Access-Token(企业微信/飞书)获取进一步的信息。

3 验证演示

以配置的某个PHP应用下,放一个http.php文件,内容为:

代码语言:javascript复制
<?php
$headers = array();
foreach ($_SERVER as $key => $value) {
    if ('HTTP_' == substr($key, 0, 5)) {
        $headers[str_replace('_', '-', substr($key, 5))] = $value;
    }
}
echo '<pre>';
print_r($headers);
?>

在Janusec Application Gateway的应用管理中,勾选"Enable OAuth2",启用OAuth2 。

访问该http.php页面,浏览器自动跳转到扫码登录页面,扫码通过后,即可查看到该网页的输出:

代码语言:javascript复制
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头部:

代码语言:javascript复制
Authorization: Bearer hmaEIdtA_EigLd0q6s1grFMuspVTCme8PEU4SkSeWJAv06Rg6u_PWUdU2g
X-Auth-User: U2

后端的网站,可以不用任何修改,就获得了需要通过身份认证才能访问的效果。

同时,后端网站也可以直接使用HTTP头部传递过来的身份信息。

4 退出OAuth2登录

后端网站只需要添加一个退出链接 /oauth/logout ,即可实现退出效果。

最后,需要说明的是,这种方式配合后端网站的来源访问控制,效果更好,也就是只允许网关过来的请求,这样,切断黑客进入内网后的横向移动通道。

5.附录

Janusec Application Gateway的来历,在此前的文章中已经介绍过了,参见:基于Golang打造一款开源的WAF网关。它提供了统一的应用接入、WAF (Web Application Firewall, Web应用防火墙)、CC攻击防御、统一Web化管理入口、证书私钥保护,Web路由以及可扩展的负载均衡等功能。

这款开源产品的架构设计理念,在作者的《数据安全架构设计与实战》一书中做了介绍。

本文作者U2(郑云文),资深数据安全与隐私保护专家,同时也是《数据安全架构设计与实战》一书以及Janusec Application Gateway开源应用网关的作者,长期从事数据安全与隐私保护工作。

0 人点赞