ホームページ >バックエンド開発 >PHPチュートリアル >PHP SSO シングル サインオンとユーザー エクスペリエンスの完璧な組み合わせ

PHP SSO シングル サインオンとユーザー エクスペリエンスの完璧な組み合わせ

PHPz
PHPzオリジナル
2023-10-15 08:23:141190ブラウズ

PHP SSO单点登录与用户体验的完美结合

PHP SSO シングル サインオンとユーザー エクスペリエンスの完璧な組み合わせ

インターネットの急速な発展に伴い、人々はさまざまな Web サイトを使用する際に頻繁に登録を行う必要があります。ログインはユーザーの時間と労力を浪費するだけでなく、ユーザーが自分のアカウント番号とパスワードを忘れやすくなります。この問題を解決するために、シングル サインオン (SSO) テクノロジーが登場しました。関連する複数の Web サイトまたはアプリケーション間でユーザー情報を共有すると、ユーザーは 1 か所でログインし、ログインせずに他のアプリケーションにアクセスできるようになり、ユーザー エクスペリエンスが大幅に向上します。

PHP は Web 開発で広く使用されているスクリプト言語であり、高速かつ柔軟で、学習と使用が簡単です。この記事では、PHP を使用して SSO シングル サインオンを実装する方法を詳しく説明し、具体的なコード例で説明します。

1. シングル サインオンの原理とプロセス

シングル サインオンの実装は、次の手順に分けることができます。メイン サイトにアクセスしてログインを試行します。;

    メイン ステーションはユーザーを ID 認証センターに移動するように案内します;
  1. ID 認証センターはユーザーの ID を確認し、認証が成功したことを示す ID を返します。
  2. メイン ステーションは認証成功の ID を取得します 識別後、その ID を使用して暗号化されたトークン情報を生成します;
  3. メイン ステーションは暗号化されたトークン情報をユーザーのブラウザに返します;
  4. トークン情報をユーザーのブラウザに保存します;
  5. ユーザーがサブサイトにアクセスすると、サブサイトはトークン情報を取得し、メイン サイトに対して ID を認証します;
  6. Afterメイン サイトは検証に合格すると、成功したサブステーション認証の ID を返します。
  7. サブサイトは、メイン サイトに従ってサブサイトの ID を決定します。返された成功した認証の ID により、ログインが可能になります。出入り自由。
  8. #2. SSO シングル サインオンを実装するコード例
  9. 次は、SSO シングル サインオンを実装するための簡単な PHP コード例です:

# #メイン サイト (sso.example.com):

  • // シングル サインオン認証センターのアドレス
  • $authCenterUrl = 'http:// auth .example.com';

    // ユーザーログイン

    function login($username, $password)

    {

    // 调用身份认证中心的接口验证用户身份
    $authResult = callApi($authCenterUrl . '/login', ['username' => $username, 'password' => $password]);
    
    // 验证成功
    if ($authResult['success']) {
        // 生成Token信息
        $token = generateToken();
    
        // 将Token信息保存在主站的Session中
        $_SESSION['token'] = $token;
        
        // 通过Header方式将Token信息传给用户浏览器
        header('Set-Cookie: token=' . $token . '; Domain=.example.com; Path=/;');
        
        // 跳转到主站首页
        header('Location: http://sso.example.com');
        exit;
    }
    
    // 验证失败
    // 弹出错误提示
    echo '登录失败,请检查用户名和密码是否正确。';

    }


    // 生成トークン情報
    function generatedToken()

    {

    // 使用UUID生成Token信息
    return uniqid();

    }


    // ユーザーログアウト
    function logout()

    {

    // 清除Session中的Token信息
    unset($_SESSION['token']);
    
    // 调用身份认证中心的接口注销用户
    callApi($authCenterUrl . '/logout');
    
    // 跳转到主站首页
    header('Location: http://sso.example.com');
    exit;

    }


    // インターフェースメソッドの呼び出し
    function callApi($url, $data = [])

    {

    // 使用CURL函数调用接口
    // ...

    }


    ?>

    サブサイト (sub.example.com):

  • // ユーザーがサブサイトにアクセスすると、トークンを取得しますinformation
  • $token = $_COOKIE['token'];

    // メイン サイトのインターフェイスを呼び出してトークンを確認します。 information

    $authResult = callApi('http://sso. example.com/check', [' token' => $token]);


    // 検証成功

    if ($authResult['success']) {

    // 免登录访问子站
    // ...

    } else {

    // 跳转至主站登录页
    header('Location: http://sso.example.com/login');
    exit;

    }

    ?>

    上記のコード例を使用すると、単純な SSO シングル サインオン システムを実装できます。このうち、メインサイトはユーザーのログイン、ログアウト、Token情報の生成などを担当し、サブサイトはメインサイトに対するユーザーの本人確認とその結果に基づくログインフリーアクセスの実現を担当します。

    3. 概要

    この記事では、PHP と SSO シングル サインオンの組み合わせを紹介し、具体的なコード例を示します。 PHP を使用して SSO シングル サインオンを実装すると、ユーザーのログイン エクスペリエンスが大幅に向上し、ユーザーの登録とログインの数が削減され、ユーザーの定着率と満足度が向上します。同時に、SSO シングル サインオンにより、ユーザー情報を簡単に共有し、さまざまなアプリケーション間のデータの相互運用性を実現し、ビジネスの共同開発を促進することもできます。私たちは、SSO シングル サインオンの適用により、インターネット ユーザーにより良いエクスペリエンスと利便性をもたらすことができると信じています。

    以上がPHP SSO シングル サインオンとユーザー エクスペリエンスの完璧な組み合わせの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。