2

次の要素があります。

  • OAuth で保護された RESTful API を提供するPHP バックエンド(FOSOAuthServerBundle with Symfony 2)
  • Javascript フロントエンド(AngularJS)、つまりOAuth クライアント

私の目標は、フロントエンドで認証ページをユーザーに提供し、Javascript を介してログインして API にアクセスできるようにすることです。

この記事によると、私はこれを次のように行います: http://www.bubblecode.net/fr/2013/03/10/comprendre-oauth2/ (残念ながらフランス語ですが、少しスクロールすると、標準的な助成金の流れは英語です):

  1. ユーザー資格情報 (ログインとパスワード) を尋ねるフォームを提供します
  2. OAuth Implicit Grantを使用して、ユーザー資格情報をアクセス トークンと交換します。

これまでのところ、すべてが (ほぼ) うまく機能するはずです。


さて、この質問の理由は、Facebook ログインをフロントエンドに追加したいからです。これにより、フロントエンドでユーザーが Facebook ログインに登録するたびに、Facebook アクセス トークンが得られます。理想的には、バックエンドは次のようにする必要があります。

  • このトークンを取得
  • それを検証するために Facebook PHP API に対してチェックしてください
  • Facebook PHP API からユーザーの Facebook UID を取得します
  • 私のアプリ登録ユーザーのものと比較してください
  • Facebook の UID が登録済みのアプリ ユーザーの 1 人と一致する場合にのみ、アクセス トークンを返します (今回は Facebook ではなく、自分のアプリ用です)。

私の質問は次のとおりです:このようなユースケースでフロントエンドとバックエンドの間のトランザクションを行うためにどのタイプの許可を使用する必要がありますか?

4

1 に答える 1

1

実際、私は解決策を見つけることができました。この問題を解決するには、Implicit Grant (クライアント シークレットが要求されない) に基づいて、カスタム グラントを設計する必要があります。

ただし、FOSOauthServerBundle はパブリック クライアントに基づく許可をまだ実装していません (詳細については、 https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/266を参照してください)。

于 2014-12-11T15:53:32.123 に答える