web-dev-qa-db-ja.com

OAuthを使用して認証する

私は、フロントエンドにAngularJSアプリを使用しているときに、分離されたDrupal 8を中心に考えています。ユーザーがユーザー名を使用してD8サイトで認証できるようにすることです。とパスワードを入力し、OAuthトークンを提供して、リクエストの継続を許可します。

このタイプの認証を許可するための正しいフローは何ですか?これは物事を進める正しい方法ですか?基本的な認証はOAuthほど安全ではないので、私はそれを避けたいと思います。

Simple_oathモジュールとjDrupalをいじくり回してきましたが、まだ完全に「ある」ようには見えません。助言がありますか?

私が抱えている問題の一部は、OAuthモジュールが終了する場所と、モジュールを開始する必要がある場所を特定することです。

[編集]クッキー/セッション認証に関して矛盾することを聞きました。私の最終目標は、これをアプリに変えることです。 Cookie /セッションストレージはモバイル環境で機能しますか?

ありがとう!

6
lukedekker

Oauthは正当化されます。ただし、他に選択肢がない場合は、Cookie認証を使用できます。私は以前にそれを使用したことがあり、それを使用している人々も聞いています。覚えておくべきことがいくつかあります。モバイルアプリケーションでCookie認証を使用することをお勧めします。

  • セッションのタイムアウト時間を長い期間、たとえば1年以上に増やす必要があります。つまり、期間が過ぎると、ユーザーは再度ログインするように求められることになります。または、リクエストごとにCookieを更新できます。次のことを行う必要があります:
    1. PHP設定でセッション設定を変更します
    2. Drupal設定でセッション設定を変更します
  • ユーザーを認証し、Set-Cookieヘッダーを使用してユーザーのセッションIDを永続化するメカニズムを用意する必要があります。
  • セッションCookieの有効期限が切れたときにサインインの失敗を処理するメカニズムが必要になります。セッションの有効期限が切れたら、ユーザーをサインインページに再度送信し(ユーザー名フィールドに事前に入力されている場合があります)、再度サインインするように要求できます。
  • セッションを長く開いたままにしておくとセキュリティ上の脅威になるため、CSRFトークンなどの他のメカニズムの使用を検討する場合があります。

注:実験の気分になっている場合は、 [〜#〜] jwt [〜# 〜] 認証。また、巨大なユーザーベースを想定している場合は、ストレージとして Firebase のようなサービスを検討できます。

それが役に立てば幸い。幸せなコーディング!

6
Jigarius