2017-07-29 20 views
0

私はlaravel/lumenアプリケーションでSSOを実装しています。私には以下のようなものがあります。リソース/アプリケーションサーバーのユーザーを認証するために認証サーバーのOauth2アクセストークンを使用する方法

  1. 認証laravel上のサーバ(集中ユーザディレクトリのOAuth2使用laravel /パスポート)内腔に
  2. リソースサーバ(Webアプリケーション、のないテーブル)
  3. クライアント側JSアプリ(ReactJS)

は、ワークフロー:クライアントがユーザによって承認され、を取得しているのOAuth2

  1. ログインボタンクライアントでは、サーバーをのauthするのにかかりますを開き、クライアントにリダイレクトします。
  2. クライアントは、POST要求を使用してデータサーバーにデータを送信します。これにより、認証サーバーからaccess_token,refresh_tokenが取得されます。
  3. 次に、認証サーバーaccess_tokenを使用して、リソースサーバー(アプリケーションサーバー)のユーザーを承認することです。私はそれがステートレスである必要がここ

が詳細に示すフローチャートである(JWT?):

enter image description here

答えて

1

access_tokenを獲得した後は、認証サーバに戻すAuthorizationヘッダを送信する必要が、そこにあなたが使用することができますユーザーの認証と承認のためのカスタムミドルウェアまたはコントローラアクション

シンプルなワークフローは次のようなものが考えられます。

あなたはaxiosライブラリとサーバーのAPIをのauthするためにHTTPリクエストを送信していると想像ルートがフロントエンドアプリでので、api/user/authorizeであると仮定すると:

axios({ 
    method: 'get', 
    url: `http://localhost:8000/api/user/authorize`, 
    headers: { 
     'Accept': 'application/json', 
     'Authorization': `Bearer ${access_token}` 
    } 
}) 
.then(response => { 
    // stuff to do on success 
}) 
.catch(error => { 
    // stuff to do on failure 
}); 

ルート/ api.php:

Route::get('user/authorize', '[email protected]'); 

UserController.php:

public function isAuthorized(Request $request) 
{ 
    // Retrieving user based the on provided authorization header 
    $user = Auth::guard('api')->user(); 

    // In case of no-user 
    if (!$user) { 
    return response()->json([ 
     'isAuthorized' => false 
    ], 401); 
    } 

    return response()->json([ 
    'isAuthorized' => true 
    ], 200); 
} 

、これは他の多くの方法で行うことができます。あなたはアイデアを得ることを願っています!

+1

私は認証サーバーではなく、**リソースサーバー**へのユーザーの認証を求めています。認証サーバーがaccess_tokenを戻したので、ユーザーは認証サーバーですでに許可されています。 – Sisir

+0

違いはありませんが、私は単純なワークフローを表しました! _username_と_password_を指定し、認証サーバーから 'access_token'を取得しました。これから、あなたはAppサーバーに対して行うすべてのHTTPリクエストにそのトークンを添付する必要があります。次に、ユーザーを認証するために、ヘッダーを認証サーバーに転送する必要があります。 – ironcladgeek

+0

大丈夫、私はその部分を理解しています。しかし、アプリケーションサーバがそれ自体に対して同じアクセストークンをどのように許可/検証するのか? – Sisir

関連する問題