sksso / smartsso-postgresql
SDK SSO Smartkampung Banyuwangi
Requires
- php: >=7.4
- ext-openssl: *
- guzzlehttp/guzzle: ^7.0
README
SDK SSO Smartkampung Web PHP数据库 PostgreSQL文档
1. 描述
此SDK允许轻松集成Smartkampung SSO(单点登录)服务。使用此SDK,应用程序可以轻松验证和通过Smartkampung SSO管理用户认证。
2. SSO登录认证流程
说明
A. 重定向登录
重定向到SSO登录页面。
B. 提取数据
从先前已加密的服务器SSO中提取凭证数据。
C. 获取票据
使用GET请求方法从SSO服务器接收加密的登录票据。
D. 验证票据
验证从SSO服务器接收的先前登录票据。
E. 通过ID进行认证登录
如果票据有效,则进入由每个web框架提供的原始认证登录过程,但使用ID用户登录的方法而不是密码,因为此登录部分不使用密码,为了网站安全,因此将此认证登录功能合并为一个方法在控制器中,以处理上面的C、D、E点。
F. 用户登出
将用户会话数据发送到SSO服务器以执行服务器上的登出过程。
3. SDK安装
要安装此SDK,请使用composer。打开命令提示符/终端,进入您的项目主目录,然后运行以下命令
composer require sksso/smartsso-postgresql
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服务器参数
在此示例中,假设您的数据库中用户表中的列名称如下所示
必须输入表中所有列的名称,以进行同步。将上面的表名称与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();
