web-dev-qa-db-ja.com

ユーザーを認証する適切な方法は何ですか?

数年前、Joomlaの外部から来たユーザーを認証する、小さくて非常に不完全なコンポーネントを書きました!つまり、モバイルアプリケーションです。

これを処理する適切なまたは好ましい方法はありますか?

7
Nestor Ledon

あなたのコメントに基づいて、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サイトを制御してトークンを無効にし、モバイルユーザーに再度ログインさせることができます。

5
David Fritsch

次のコードを使用できます。

JFactory::getApplication()->login($credentials);

どこ:

$credentials = Array('username' => string, 'password' => string);
4
csbenjamin

OAuth/OAuth2などを使用したい。ここでの私の考えは本当ではありませんOAuthしかし、Joomlaの私の知識に基づいた最も簡単な方法です。

JoomlaのコンポーネントへのAPI呼び出しを介してユーザーを検証し、IPに接続されているトークンを作成してから、そのトークンを検証してセッションを作成するGETリクエストでリダイレクトします。トークンは、すでに認証されたユーザーを認証するためにIPに依存しているため、セキュリティで保護するのは簡単です。最善の方法は、トークンを1回だけ使用できるようにすることです。 API呼び出しの場合、最良の結果を得るには、SSLで暗号化したPOSTリクエストにする必要があります。

したがって、POSTリクエストをユーザーのIP、ユーザー名、パスワードを含むコンポーネントに送信します。それがすべて有効であれば、トークンを送り返します。次に、そのトークンを含むコンポーネントにユーザーをリダイレクトします。セッションを設定します。JoomlaAPIを使用してユーザーをログインさせる方法はわかりませんが、何か問題があると思います。

編集:csbenjaminの回答はログイン用のAPIに入っているようです。

3
Jordan Ramstad