sksso/smartsso-postgresql

此包最新版本(1.0.5)没有可用的许可信息。

SDK SSO Smartkampung Banyuwangi

1.0.5 2023-12-20 05:26 UTC

This package is auto-updated.

Last update: 2024-09-20 09:52:06 UTC


README

PHP Composer Psalm Security Scan

SDK SSO Smartkampung Web PHP数据库 PostgreSQL文档

1. 描述

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

2. SSO登录认证流程

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