目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル PHPでシングルユーザーアプリログインを行う方法

PHPでシングルユーザーアプリログインを行う方法

Jul 06, 2016 pm 01:53 PM
php

現在の要件は、QQ などのコミュニケーション ツールに使用されるアプリでは、以前にログインした場合はブロックされています。これを実装する方法がわかりません。 ?

返信内容:

現在の要件は、QQ などのコミュニケーション ツールに使用されるアプリでは、以前にログインした場合はブロックされています。これを実装する方法がわかりません。 ?

アプリが配置されているデバイス情報を収集し、そのデバイス情報をユーザーにバインドします。1 人のユーザーが 1 つのデバイスでそのアプリを使用することが許可され、前のデバイスのユーザーはログイン時にキックオフされます。

過去 6 か月間、私たちはシングル サインオン システム (TnSSO) を設計し、実装してきました。これは非常に一般的なシステムですが、機能と経験について多くの詳細な調査を行いました。まとめと記録。以下では、SSO ともこのシステムを指します。

TnSSO は、PC 版とモバイル版で複数のログイン方法を提供します。ログインには通常のメール アカウントまたは携帯電話番号、Sina、QQ などのアカウントを使用した共同ログイン、および携帯電話の動的パスワード ログインがあります。また、プラットフォームごとに異なるログイン方法も用意されており、ユーザーエクスペリエンスを向上させるためにいくつかの特別なログイン方法が提供されています。たとえば、WeChat で会社の共有リンクを開くと、PC ページでは WeChat 認証を使用して直接ログインできます。ログインするためのQRコード。

現在のモバイル アプリ ページの多くは、通常のモバイル Web ページをアプリに直接埋め込んでいます。言うまでもなく、これには利点があります。アプリのネイティブ ページを介してログインするエクスペリエンスは、アプリで Web ページを開いてログインするよりも優れているため、アプリへのログインには引き続きネイティブ ページを使用します。 TnSSO はアプリのネイティブ ログイン方法と互換性があり、アプリ内のユーザーのログイン ステータスを識別できます。さらに、アプリを使用して QR コードをスキャンし、PC 版の SSO にログインすることもできます。

以下は、シングル サインオンのシーケンス図です。詳細については説明しません。これまでに使用したことのない人は、図を見れば何が起こっているかを理解できるはずです。

PHPでシングルユーザーアプリログインを行う方法

セキュリティとエクスペリエンス

TnSSO は、システムのセキュリティを確保することを前提として、セキュリティとエクスペリエンスに関して非常に詳細な考慮事項を備えており、ユーザー エクスペリエンスを最大限に最適化します。
1. クライアントとサーバー間の通信が盗聴されるのを防ぐために、プロセス全体が HTTPS です。
2. コールバック URL とホワイトリストを設定する。SSO にアクセスするには、まずクライアント サブシステムを SSO に登録する必要があります。
3. トークンは 1 回だけ有効で、クライアント サブシステムにバインドされ、使用後すぐに破棄されます。
4. ユーザー エクスペリエンスを向上させるため、ユーザーは IP ごとに 1 日あたり最初の 3 回のログイン、または携帯電話番号ごとに 1 日に初めて動的パスワードが送信されるときに確認コードを入力する必要がありません。
5. 確認コードは携帯電話の動的パスワードに 3 回以上送信されると無効になります。
6. 待ってください...

アプリログインに対応

アプリユーザーのログイン情報はアプリ内に別途保存され、SSOが提供するパブリックログインサービスは利用しません。では、ユーザーがアプリを通じて埋め込み Web ページにアクセスするとき、Web ページはどのようにしてユーザーのログイン ステータスを認識し、埋め込み Web ページとアプリのログイン ステータスをどのように共有できるのでしょうか?

私たちの解決策は、アプリがログインを必要とする埋め込みページ PageA にアクセスすると、PageA が SSO ログイン ページにジャンプします。このプロセスはすべてアプリ内で実行され、アプリが SSO ログイン ページにアクセスすると、ハッシュが追加されます。クッキーの値。 SSO はリクエストを受信すると、まず SSO 自体がログイン状態であるかどうかを判断し、ログイン状態でない場合は、Cookie 内のハッシュ値を使用してユーザー ID を取得した後、ユーザーを生成します。ログイン情報を取得し、トークンを持って WebA のコールバック URL が配置されているシステムにジャンプすると、WebA は上記のログイン プロセスを繰り返すことでログインできます。ハッシュ値が空の場合、またはハッシュ値を基にアプリサーバーから取得したユーザーIDが空の場合は、アプリが乗っ取ったURLにジャンプし、アプリのログイン完了後に上記の処理を繰り返します。

セキュリティ上の理由から、アプリはユーザー ID を直接設定するのではなく、Cookie にハッシュ値を設定します。SSO 独自のインターフェース調整を通じてアプリサーバーから取得したユーザー ID のみが正当性を保証し、信頼できます。

タイミング図は次のとおりです:

PHPでシングルユーザーアプリログインを行う方法

QR コードをスキャンしてログインする
QR コードをスキャンしてログインすることは、現在、携帯電話やその他のモバイル デバイスでログインしている場合に非常に一般的であり、これを使用して PC 版ログインのショートカットを提供することができます。ユーザーは、ユーザー自身が覚えていない可能性のある長くて複雑なパスワードを入力する必要がなく、シンプルで高速です。したがって、このログイン方法も、まだ正式にはリリースされていませんが、すでに計画され、設計されているものです。
具体的な実装方法は、まず SSO サーバーが競合しないコードをランダムに生成してデータベースに保存し、それを QR コード画像に描画して PC 版ログイン ページに表示します。ページは Javascript ショート ポーリングを使用してクエリを実行します。このコードのサーバーのログイン情報。アプリは、内蔵のコードスキャン機能を使用して画像内のコードを識別し、コードと上記のユーザーログイン情報のハッシュ値をパラメータとして使用して、アプリサーバーを介してSSOインターフェースをリクエストします。 SSO はリクエストを受信すると、まずデータベースにコードが存在するかどうかを判断し、存在する場合は正当なリクエストであることを示し、ハッシュ値を使用してユーザー ID を取得するようにアプリ サーバーに要求します。前述のアプリログインとの接続と同様です。 JS は、ユーザーがログインしていることをポーリングして確認し、ページを更新するか、元のページに戻ります。

PHPでシングルユーザーアプリログインを行う方法

最後に、TnSSO は、実際には統合ログイン サービスを提供するだけでなく、ユーザー登録、パスワード検索などの機能も統合しているため、パス システムと呼ぶのが適切であり、安定性とセキュリティの要件が最も高いシステムです。会社。

http://atlantisplus.net/articles/570.html

上の階で行われた多くのことを見ると、ログインに成功するとタイムスタンプが記録され、ログイン時にそのタイムスタンプに基づいて Cookie が解析され、タイムスタンプと比較されるようです。実際には、これはトークンを取得するだけであり、ログインに成功するたびにこのトークンを更新するだけです

1 つは、uid とデバイスをバインドする上記のようなもので、各操作で uid が現在のデバイスと一致するかどうかを検出します。
シングル サインイン関数とコールバック処理を提供する Huanxin などのサードパーティもあります。自分で長いリンクを作成する必要はありません。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles