2016-11-20 21 views
1

私は角度/レールアプリケーションでAuth0を使用する方法を理解しようとしています。角度2 +レール+ Auth0

私はAngle-onlyアプリケーションでAuth0をセットアップしました。うまくいきました。私はAuth0 docs for Railsを見ることができ、それが理にかなっていると分かります。

フロントエンド認証をRailsに接続する方法はわかりませんが、どこからでもドキュメントを見つけることはできません。

+0

こんにちはジェイソン、私も同じではなく、運を探していた。だから私は周りを歩いた。そして、それをレールにapiを作成することで解決し、facebook、Google認証をフロントエンドで別々に使用しました(ドキュメントに記載されています)。 –

+0

注:質問を投稿してから[このトピックについてのブログ記事](https://www.angularonrails.com/auth0-angular-2-rails-5-authentication/)を書きました。 –

答えて

1

さて、私はそれを理解しました。

ベアラeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JlbmZyYW5rbGlubGFicy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NTgzMDZmOTFjMDg4MTRlMDEwMTVmNDM0IiwiYXVkIjoiajNKdHpjYnNpTUkyR0JkRnZGb3FFTjM4cUtTVmI2Q0UiLCJleHAiOjE0Nzk4OTc3OTYsImlhdCI6MTQ3OTg2MTc5Nn0:私は角側での認証にAuth0を使用して、私のRailsサーバにHTTPリクエストを行った場合、そのHTTPリクエストは、このような値を持つAuthorizationヘッダーを持つことになります。"ベアラ" 後2cGLY_e7jY0WL-ue4NeT39W4pdxJVSeOT5ZGd_xNmJk

一部、 "eyJ0" で始まる部分は、JSON Web Tokenあります。以後JSON Webトークンを単に「トークン」と呼ぶことにします。

RailsはHTTPリクエストを受け取ると、トークンを取得してデコードすることができます。私の場合、私はKnockを使用しています。

ノックは私のUserモデルがfrom_token_payloadメソッドを定義することを期待しています。私user表がauth0_id_string列を持っている

class User < ApplicationRecord 
    def self.from_token_payload(payload) 
    User.find_by(auth0_id_string: payload['sub']) 
    end 
end 

:ここでは次のように地雷が見えるものです。 auth0_id_stringが復号化されたAuth0トークンの中でsubの下にあるものと一致するユーザーを手動で作成すると、私のfrom_token_payloadメソッドがそのユーザーを見つけ出し、Knockがそのトークンについて私に親指を与えます。ユーザーが見つからない場合は、サムネイルを押し下げます。

だから、このように書き、ざっと:

  1. 角度はAuth0は角がJSONウェブトークンが
  2. レールをレールにすることを送信し
  3. JSONウェブトークンを送り返しユーザー
  4. を認証するためにAuth0を頼みますそのトークンをデコードします
  5. Railsはそのトークンのデータに一致するユーザを見つけようとします
  6. Railsは200または40一致するユーザーが見つかったかどうかによって1を返します

いくつかの欠落がありますが、それがその要点です。私はおそらくAngular + Rails + Auth0認証に関するチュートリアルを書くことになるでしょう。

0

あなたが提供した情報に基づいて、フロントエンドをAngularで実装し、RailsベースのAPIを使用してAngularフロントエンドに必要なサービスを提供するアプリケーションが必要であると仮定しています。このシナリオでは

あなたは物事のAuth0側からのシングル(クライアント)アプリケーションとしてこれをモデル化し、次のいずれか行うことができます。

  1. 使用の2つの目的での認証に起因するトークンID: をそれはそれは、Railsのある、RailsのAPIへの角度、アプリケーションによって行われた呼び出しを認証するための方法として、該当するユーザー・インターフェース要件
  2. を満たすことができるように角度のアプリケーションに、現在認証されたユーザーに関する情報を提供するために、
    • API u Auth0によって発行されたIDトークンを受け入れるトークンベースの認証システムを呼び出します。
    Rails APIのエンドポイントを表示します。このAPIを使用して、ユーザー認証時に受け取ったIDトークンを、後でAPIにアクセスするために使用できる他の資格情報と交換することができます。

最初のオプションは実装が最も簡単ですが、すべてのリクエストにIDトークンを含める必要があります。 2つめは複雑さを増しますが、柔軟性を高めることができます。

これですべての問題が解決されない場合は、達成しようとしている正確なシナリオに関する詳細を質問に反映させてください。


最後の注意、あなたの意図は、後にアプリケーションの異なる範囲で使用できるAPIを提供している場合は、それを確保するための最も正しい方法はどこのトークントークンベースのシステムを使用することによりだろうOAuth2に準拠した認証サーバーによって発行されます。

独自のOAuth2認証サーバーを維持するのは非常に複雑ですので、Auth0はこれをUS地域のアカウントのプレビューモードで既に使用できる追加のサービスとして有効にしています。これは、基本的に、認証プロセスの一部として、現在認証されているユーザを知るためにクライアントアプリケーションによって使用されるIDトークンと、指定されたAPIを呼び出すことを可能にするアクセストークンとを得ることを可能にする。