1. 登录接入(可选)
1.1. 为什么要登录接入
AntDen默认会开启自己的用户登录功能,但是在生产环境中,公司内部会有单点登录系统(SSO)。
对接SSO后可以用统一的登录来进入AntDen。
1.2. 对接步骤
重写 AntDen/dashboard/sso 和 AntDen/dashboard/ssoconfig 两个插件。
重写的插件可以不要覆盖默认的插件,可以放到新路径:
AntDen/dashboard/private/code/sso 和 AntDen/dashboard/private/code/ssoconfig 。
系统判断有私有插件会首选使用私有插件。
1.2.1. ssoconfig 插件
#!# perl: code/ssoconfig
use strict;
use warnings;
return sub
{
return +{
ssocallback => 'http://sso.antden.cn/login?callback=',
cookiekey => 'u',
ssologout => 'http://sso.antden.cn/logout',
chpasswd => 'http://sso.antden.cn/chpasswd',
}
};
- chpasswd 为修改密码的连接,可以为空,为空时用户在antden上点击修改密码会提示不支持
- ssologout 为登出的连接,未定义情况下默认是清理key为cookiekey的cookie
- ssocallback(必要) 访问antden判断到用户没有登录时跳转的地址,antdne当前访问的地址会带在callback之后
登录成功后sso系统需要跳转回来
- cookiekey(必要) SSO系统使用的cookie的名称,这个cookie的值会给另一个插件进行验证
1.2.2. sso 插件
#!# perl: code/sso
use strict;
use warnings;
return sub
{
my $cookie = shift @_;
#
#通过$cookie 这个值去sso系统查询这个cookie的用户身份,获取用户的唯一标识,
#如邮箱地址,用户名 (不要使用中文)
#
#如 获取到邮箱地址 $email
#
return $email;
};
1.3. 例: 对接(聚云立方:https://console.marshotspot.com/)
#!# perl: code/ssoconfig
use strict;
use warnings;
return sub
{
return +{
ssocallback => 'https://console.marshotspot.com/account/login?redirect=',
cookiekey => 'token',
}
};
#!# perl: code/sso
use strict;
use warnings;
use Mojo::JWT;
return sub
{
my $claims = eval{ Mojo::JWT->new(secret => 'sercet123456' )->decode(shift); };
return $@ ? undef : $claims->{email};
};
};