Heim PHP-Framework Denken Sie an PHP Wie thinkphp Single Sign-On implementiert

Wie thinkphp Single Sign-On implementiert

Aug 26, 2019 am 11:02 AM
thinkphp 单点登录

Wie thinkphp Single Sign-On implementiert

1. Voraussetzung: Der CAS-Server wurde eingerichtet

Dies ist nicht der Schwerpunkt dieses Artikels, daher werde ich nicht auf Details eingehen. Portal: https://blog.csdn.net/u013825231/article/details/79132399

2. PHPCAS-Client herunterladen

PHP-Client-Download: https://github.com /apereo/ phpCAS

Hinweise zur PHP-Client-Konfiguration: https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS

php-Client-Anforderungen: https://apereo. atlassian.net/wiki/spaces/CASC/pages/103252625/phpCAS+requirements

Hinweis: Die PHP-Konfigurationsdatei php.ini muss php_curl aktivieren, find;extension=php_curl.dll, einfach das Semikolon entfernen vor dem Satz und ändern Sie ihn in extension=php_curl.dll

3. Thinkphp5 führt die phpCAS-Klassenbibliothek ein

1. Laden Sie die phpCAS-Client-Dateistruktur herunter.

Wie thinkphp Single Sign-On implementiert

Verwandte Empfehlungen: „ThinkPHP Tutorial

2. Kopieren Sie den Quellordner in den Erweiterungsordner unter Thinphp5 und benennen Sie ihn in um : phpCAS

Wie thinkphp Single Sign-On implementiert

Wie thinkphp Single Sign-On implementiert

3. Konfiguration der config.php-Datei

<?php
 
// The purpose of this central config file is configuring all examples
// in one place with minimal work for your working environment
// Just configure all the items in this config according to your environment
// and rename the file to config.php
 
$phpcas_path = &#39;phpCAS/&#39;;
 
///////////////////////////////////////
// Basic Config of the phpCAS client //
///////////////////////////////////////
$client_domain = &#39;localhost&#39;; // 客户端 domain 
$client_path = &#39;afschool&#39;;
$client_secure = false;
$client_httpOnly = true;
$client_lifetime = 0;
 
// Full Hostname of your CAS Server 服务器主机
$cas_host = &#39;cas.example.com&#39;;
 
// Context of the CAS Server  
$cas_context = &#39;/cas&#39;;
 
// Port of your CAS server. Normally for a https server it&#39;s 443
$cas_port = 443;
 
// Path to the ca chain that issued the cas server certificate
$cas_server_ca_cert_path = &#39;/path/to/cachain.pem&#39;;
 
//////////////////////////////////////////
// Advanced Config for special purposes //
//////////////////////////////////////////
 
// The "real" hosts of clustered cas server that send SAML logout messages
// Assumes the cas server is load balanced across multiple hosts
$cas_real_hosts = array (
&#39;cas-real-1.example.com&#39;,
&#39;cas-real-2.example.com&#39;
);
 
// Database config for PGT Storage
$db = &#39;pgsql:host=localhost;dbname=phpcas&#39;;
//$db = &#39;mysql:host=localhost;dbname=phpcas&#39;;
$db_user = &#39;phpcasuser&#39;;
$db_password = &#39;mysupersecretpass&#39;;
$db_table = &#39;phpcastabel&#39;;
 
///////////////////////////////////////////
// End Configuration -- Don&#39;t edit below //
///////////////////////////////////////////
 
// Generating the URLS for the local cas example services for proxy testing
if ( isset($_SERVER[&#39;HTTPS&#39;]) && $_SERVER[&#39;HTTPS&#39;] == &#39;on&#39;){
$curbase = &#39;https://&#39;.$_SERVER[&#39;SERVER_NAME&#39;];
}else{
$curbase = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;];
}
if ($_SERVER[&#39;SERVER_PORT&#39;] != 80 && $_SERVER[&#39;SERVER_PORT&#39;] != 443)
$curbase .= &#39;:&#39;.$_SERVER[&#39;SERVER_PORT&#39;];
 
$curdir = dirname($_SERVER[&#39;REQUEST_URI&#39;])."/";
 
 
// CAS client nodes for rebroadcasting pgtIou/pgtId and logoutRequest
$rebroadcast_node_1 = &#39;http://cas-client-1.example.com&#39;;
$rebroadcast_node_2 = &#39;http://cas-client-2.example.com&#39;;
 
// access to a single service
$serviceUrl = $curbase.$curdir.&#39;example_service.php&#39;;
// access to a second service
$serviceUrl2 = $curbase.$curdir.&#39;example_service_that_proxies.php&#39;;
 
$pgtBase = preg_quote(preg_replace(&#39;/^http:/&#39;, &#39;https:&#39;, $curbase.$curdir),&#39;/&#39;);
$pgtUrlRegexp = &#39;/^&#39;.$pgtBase.&#39;.*$/&#39;;
 
$cas_url = &#39;https://&#39;.$cas_host;
if ($cas_port != &#39;443&#39;)
{
$cas_url = $cas_url.&#39;:&#39;.$cas_port;
}
$cas_url = $cas_url.$cas_context;
 
 
// Set the session-name to be unique to the current script so that the client script
// doesn&#39;t share its session with a proxied script.
// This is just useful when running the example code, but not normally.
session_name(&#39;session_for:&#39;.preg_replace(&#39;/[^a-z0-9-]/i&#39;, &#39;_&#39;, basename($_SERVER[&#39;SCRIPT_NAME&#39;])));
?>
Nach dem Login kopieren

4. Weil Der Server, auf dem ich Single Sign-On angefordert habe, ist http-authentifiziert, nicht https. Ich muss CAS/client.php ändern und https in http ändern (die Datei client.php wurde zu Beginn nicht geändert und es wurde immer die https-Authentifizierung verwendet. Also die Anfrage ist fehlgeschlagen)

5. Benennen Sie die Geschwisterdatei CAS.php des CAS-Klassenbibliotheksordners in phpCAS.php um

Wie thinkphp Single Sign-On implementiert

und ändern Sie sie in

Wie thinkphp Single Sign-On implementiert

6. Die Login-Controller-Methode ist:

<?php
namespace app\index\controller;
use think\Db;
use think\Loader;
 
class Index extends \think\Controller
{
    public function login()
    {
// Example for a simple client
        // Load the settings from the central config file
        require &#39;./extend/config.php&#39;;
        // Loader::import(&#39;config.php&#39;,EXTEND_PATH);
        // Load the CAS lib
        //直接引入phpCAS扩展库下的类文件phpCAS.php
        Loader::import(&#39;phpCAS\phpCAS&#39;,EXTEND_PATH);        
        //直接引入库文件需要实例化类
        $phpCAS = new \phpCAS();
        // Uncomment to enable debugging
        $phpCAS->setDebug();
        
        // Initialize phpCAS
        $phpCAS->client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context);
 
        // For quick testing you can disable SSL validation of the CAS server. 
        // THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION. 
        // VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL! 
        $phpCAS->setNoCasServerValidation();
 
        //这里会检测服务器端的退出的通知,就能实现php和其他语言平台间同步登出了
        $phpCAS->handleLogoutRequests();
 
        //访问CAS的验证通过后,跳转到网页
        if($phpCAS->forceAuthentication()){ 
 
        echo "<script language=\"javascript\">parent.location.href=&#39;http://www.baidu.com&#39;;</script>";
 
        };
        
     }
}
Nach dem Login kopieren

Besuchen Sie abschließend diese Login-Methode, um den Sprung zur Single-Sign-In-Seite abzuschließen!

Das obige ist der detaillierte Inhalt vonWie thinkphp Single Sign-On implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie das Thinkphp-Projekt aus So führen Sie das Thinkphp-Projekt aus Apr 09, 2024 pm 05:33 PM

Um das ThinkPHP-Projekt auszuführen, müssen Sie: Composer installieren, das Projektverzeichnis aufrufen und http://localhost:8000 aufrufen.

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen gehören 3.2, 5.0, 5.1 und 6.0, während Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

Was ist besser, Laravel oder Thinkphp? Was ist besser, Laravel oder Thinkphp? Apr 09, 2024 pm 03:18 PM

Leistungsvergleich von Laravel- und ThinkPHP-Frameworks: ThinkPHP schneidet im Allgemeinen besser ab als Laravel und konzentriert sich auf Optimierung und Caching. Laravel schneidet gut ab, aber für komplexe Anwendungen ist ThinkPHP möglicherweise besser geeignet.

So installieren Sie thinkphp So installieren Sie thinkphp Apr 09, 2024 pm 05:42 PM

ThinkPHP-Installationsschritte: Bereiten Sie PHP-, Composer- und MySQL-Umgebungen vor. Erstellen Sie Projekte mit Composer. Installieren Sie das ThinkPHP-Framework und die Abhängigkeiten. Datenbankverbindung konfigurieren. Anwendungscode generieren. Starten Sie die Anwendung und besuchen Sie http://localhost:8000.

So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On Oct 15, 2023 pm 02:49 PM

So erreichen Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On. Einführung: Mit der Popularität von Internetanwendungen sind Benutzer mit einer großen Anzahl von Registrierungs- und Anmeldeprozessen konfrontiert. Um das Benutzererlebnis zu verbessern und die Registrierungs- und Anmeldeintervalle der Benutzer zu verkürzen, haben viele Websites und Anwendungen damit begonnen, die Single-Sign-On-Technologie (Single Sign-On, kurz SSO) einzuführen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP ein effizientes und stabiles SSO-Single-Sign-On implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. SSO-Single-Sign-On-Prinzip SSO-Single-Sign-On ist eine Lösung zur Identitätsauthentifizierung

Wie ist die Leistung von thinkphp? Wie ist die Leistung von thinkphp? Apr 09, 2024 pm 05:24 PM

ThinkPHP ist ein leistungsstarkes PHP-Framework mit Vorteilen wie Caching-Mechanismus, Codeoptimierung, Parallelverarbeitung und Datenbankoptimierung. Offizielle Leistungstests zeigen, dass es mehr als 10.000 Anfragen pro Sekunde verarbeiten kann und in großen Websites und Unternehmenssystemen wie JD.com und Ctrip in praktischen Anwendungen weit verbreitet ist.

See all articles