2016-09-19 9 views
-1

私が持っている2アプリ:symfonyの2 RESTfulなAPIのOAuth2

1 APP - メインアプリ(CMR) 2 APP - ウェブサイト

主な目的は、のOAuth2を使用して1つのAPPから2 APPに接続しています。

1 APPはFOSOAuthServerBundleで実装されていますが、oauth2クライアントは存在しません。

ユーザーはユーザー名/パスワードの資格情報しか知らないため、問題はoauth2クライアントを生成できないことです。

最初のステップでユーザーがログインフォームを送信します。それから何らかの形でユーザー証明書からトークンを生成する必要があります。

ユーザーID /パスワードと同じidの秘密のoauth2クライアントを安全に生成できますか。

答えて

1

ユーザーは、client_idとclient_secretを知る必要はありません。実際には、APP 2を除いて他の誰かに知られても安全ではありません。クライアントの資格情報(client_id、client_secret)は認証サーバーで生成されます。次に、APP 2の開発者はこのクライアントの資格情報を取得し、APP 2のみがアクセスできる場所(アプリ2の設定ファイルやアプリ2 dbなど)に保存します。これが行われた後、ユーザがログインしたい場合は、ユーザ名とパスワードのみを提供します。アプリケーション2は、認可タイプ 'password'と必要なスコープを使用して、authサーバのトークンAPIへAPIコールをラップします。

しかし、これはauth2の表面だけを傷つけます。ネットワークに3番目のアプリケーションを追加し、A1とA2で生成されたトークンを使用してA2とA3が安全に通信するようにするには、A1にイントロスペクションAPIが必要です。または、署名付きJWT openIdを使用する必要があります。

短い話ですが、FOSOAuthServerBundleは良いスタートですが、長期的には多くの作業を行う必要があります。ここにあなたを導くための資料があります。

AUTH2のRFC:https://tools.ietf.org/html/rfc6749

トークンINTROSPECTのRFC:https://tools.ietf.org/search/rfc7662

記号JWT:https://jwt.io

はまたOpenIDで、RBAC、ACLに見えます。これはまたある時点で便利になるでしょう。