sksso/sdklrvlsso

SDK SSO Smartkampung Banyuwangi

v1.0.5 2023-10-25 02:40 UTC

This package is auto-updated.

Last update: 2024-09-20 09:47:00 UTC


README

PHP Composer Psalm Security Scan

SDK SSO Smartkampung Web PHP数据库 MySQL文档

1. 描述

此SDK允许轻松集成Smartkampung的SSO(单点登录)服务。使用此SDK,应用程序可以轻松验证和管理通过Smartkampung SSO的用户身份验证。

2. SSO登录认证流程

auth_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();