sksso / sdklrvlsso
SDK SSO Smartkampung Banyuwangi
Requires
- php: >=7.4
- ext-openssl: *
- guzzlehttp/guzzle: ^7.8
README
SDK SSO Smartkampung Web PHP数据库 MySQL文档
1. 描述
此SDK允许轻松集成Smartkampung的SSO(单点登录)服务。使用此SDK,应用程序可以轻松验证和管理通过Smartkampung SSO的用户身份验证。
2. SSO登录认证流程
说明
A. 重定向登录
重定向到SSO登录页面。
B. 提取数据
从之前已加密的SSO服务器提取凭据数据。
C. 获取票据
使用GET请求从SSO服务器接收加密登录票据。
D. 验证票据
验证从SSO服务器接收的登录票据。
E. 通过ID认证登录
如果票据有效,则继续到由各自的web框架提供的auth登录过程,但使用用户ID登录而不使用密码,因为此登录部分不使用密码,为了网站安全,因此将auth登录功能放在一个controller中的方法中,处理以上C、D、E点。
F. 用户登出
将用户会话数据发送到SSO服务器,以在服务器上执行登出过程。
3. 安装SDK
要安装此SDK,请使用composer。打开命令提示符/终端,进入项目主目录,运行以下命令
composer require sksso/sdklrvlsso
4. 配置
A. 导入SDK
在控制器use语句部分输入以下代码以导入SDK。use sksso\SDKlrvlSSO;
B. 设置环境
将上述环境参数的值放入您在控制器中放置的setEnv()函数中,之前您必须在代码顶部初始化此代码$this->sdkSSO = new SDKlrvlSSO();,例如在构造函数中输入,如下所示
private $sdkSSO; public function __construct() { //inisialisasi konfigurasi SSO $this->sdkSSO = new SDKlrvlSSO(); $this->sdkSSO->setEnv([ALIAS_ID], [SECRET_KEY_BODY], [SECRET_KEY_URL]); ....
C. 登录页面
要导航到SSO登录页面,请使用以下代码
$this->sdkSSO->loginPage();
D. 设置数据库配置
您可以使用以下代码设置MySQL数据库连接
$this->sdkSSO->setDbConfig([HOST], [DB_USER], [DB_PASS], [DB_NAME]);
E. 同步数据库表
在同步数据库表之前,您必须先知道将同步的参数名称与数据库中用户/用户表的列名称相对应。以下为SSO服务器的参数
在这种情况下,例如,您的数据库中的用户表列名称如下所示
必须写入/输入所有数据库表名称,以进行同步。同步上述表名称与SSO服务器参数数组名称,如下所示如果表已同步,则将上述表数据转换为具有键的数组
- nama_table(输入要同步的表名),
- user_key(输入以下参数之一:nik,email,phone),和
- field_table(输入上述同步数据表的数组数据)
以下是数据数组的示例
$dataTable = [ "nama_table" => "users", "user_key" => "nik", "field_table" => [ "id" => NULL, "username" => NULL, "password" => NULL, "nama_lengkap" => "name", "alamat" => NULL, "email" => "email", "nik" => "nik", "created_by" => NULL, "created_date" => "created_at" ] ];
将上述数组数据输入以下函数
$this->sdkSSO->syncDbTable($dataTable);
以下是上述步骤的代码脚本摘录
use sksso\SDKlrvlSSO; class NamaController extends Controller { private $sdkSSO; public function __construct() { //inisialisasi konfigurasi SSO $this->sdkSSO = new SDKlrvlSSO(); $dataTable = [ "nama_table" => "users", "user_key" => "nik", "field_table" => [ "id" => NULL, "username" => NULL, "password" => NULL, "nama_lengkap" => "name", "alamat" => NULL, "email" => "email", "nik" => "nik", "created_by" => NULL, "created_date" => "created_at" ] ]; $this->sdkSSO->setEnv([ALIAS_ID], [SECRET_KEY_BODY], [SECRET_KEY_URL]); $this->sdkSSO->setDbConfig([HOST], [DB_USER], [DB_PASS], [DB_NAME]); $this->sdkSSO->syncDbTable($dataTable); }
5. SDK使用
A. 提取凭据数据
在控制器中创建方法以接收和提取从SSO服务器发送的凭据POST数据。以下是一个示例代码
public function ekstrakData(){ $data = file_get_contents('php://input'); return $this->sdkSSO->ekstrakDataCredentials($data); }
通知SSO管理员上述方法的url端点,以便可以从SSO服务器访问
B. 验证票据
在控制器中创建一个方法来接收从SSO服务器发送的_GET票务数据。以下是示例代码:
public function login(Request $request, $param){ $dataUsers = $this->sdkSSO->cekTiket($param); if($dataUsers) //output data kredensial pengguna format array { Auth::loginUsingId($dataUsers['id']); //auth login by ID return redirect()->route('home'); //kondisi setelah user dapat login } }
通知SSO管理员上述方法的URL端点,以便可以从SSO服务器访问。
在上面的脚本代码中,Auth::loginUsingId($dataUsers['id']);这一行是Laravel框架的函数(对于其他框架可能需要调整),该函数用于根据用户ID进行登录认证,无需密码。
C. 登出
以下是为用户登出命令的脚本代码。
$this->sdkSSO->logout();
