数年前に、Joomlaの外部から来たユーザーを認証する、小さくて非常に不完全なコンポーネントを書きました!つまり、モバイルアプリケーションです。
これを処理する適切なまたは好ましい方法はありますか?
数年前に、Joomlaの外部から来たユーザーを認証する、小さくて非常に不完全なコンポーネントを書きました!つまり、モバイルアプリケーションです。
これを処理する適切なまたは好ましい方法はありますか?
回答:
コメントに基づいて、OAuth設定を探しています。私の知る限り、JoomlaにはコアにOauthクラスが組み込まれていますが、これらのクラスは、Joomlaがクライアントとして機能できるようにするためのものです(この場合、モバイルアプリはクライアントです)。サーバーとして実行するオプションはありません。
最近このパッケージを使用して、JoomlaフレームワークにOAuth2サーバーをセットアップしました:https : //github.com/bshaffer/oauth2-server-php。それはとてもうまくいきました。すべての設定が完了するまで数日かかることは間違いありませんが、Joomla内で確実に設定できます。
OAuth2内でユーザーを認証する方法はいくつかあります。一般的なアプローチは、クライアントにユーザーをサイトにリダイレクトさせ、ログイン情報を入力させることです。次に、クライアントをアクセストークンに変換するコードを使用して、ユーザーをクライアントにリダイレクトします。
あなたもモバイルアプリケーションを制御しているように聞こえるので、これは不要です。あなたはクライアントを信頼しています(私はそう思います)ので、ユーザーにアプリケーションへのログインを許可することができます。
次に、http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/で説明されている「リソース所有者/パスワード資格情報」オプションを使用します。これにより、モバイルアプリは入力されたユーザー/パスワードをJoomlaサイトに送信し、Joomlaサイトは検証用のトークンを返送します。トークンを保存して、次回ログインする代わりに次回使用することができます。
これにより、Joomlaサイトを制御してトークンを無効にし、モバイルユーザーに再度ログインさせることができます。
次のコードを使用できます。
JFactory::getApplication()->login($credentials);
どこ:
$credentials = Array('username' => string, 'password' => string);
login
は、onAuthenticateイベントをトリガーするJAuthentication :: authenticateメソッドを使用します。したがって、このドキュメントでは、joomlaログインサイクルの一部について説明しています。その目的は、joomlaログインサイクルと対話し、カスタムログインを実行する方法を提供することです。このサイクルでは、我々はあまりにも、onUserLoginやイベントonUserAfterLogin onUserAuthorisationFailureを持っている
OAuth / OAuth2などを使用したい。ここでの私の考えは真のOAuthではありませんが、Joomlaに関する私の知識に基づいた最も簡単な方法です。
JoomlaのコンポーネントへのAPI呼び出しを介してユーザーを検証し、IPにアタッチされるトークンを作成してから、そのトークンを検証してセッションを作成するGETリクエストでユーザーをリダイレクトします。トークンは、すでに認証されているユーザーを認証するためにIPに依存しているため、セキュリティで保護するのは簡単です。最善の方法は、トークンを1回だけ使用できるようにすることです。API呼び出しの場合、最良の結果を得るには、SSL暗号化POSTリクエストである必要があります。
したがって、ユーザーのIP、ユーザー名、パスワードを含むPOSTリクエストをコンポーネントに送信します。すべて有効な場合は、トークンを送り返します。次に、そのトークンを含むコンポーネントにユーザーをリダイレクトして、セッションを設定します。Joomla APIを使用してユーザーをログインさせる方法はわかりませんが、何か問題があると思います。
編集:csbenjaminの回答はログイン用のAPIに入っているようです。