0

2 つの Web アプリケーションがあります。1つはウェブサイトです。もう 1 つは API です。どちらもフラスコを使用して構築されています。それらは異なる認証方法を使用します。

この Web サイトでは、flask-login ライブラリを使用しています。具体的には、フォームによって提供されたlogin_user場合に使用されます。user.check_password

API は、暗号署名されたトークンを使用します。この API は、モバイル アプリケーション (ios など) で使用されます。/api/loginこれらのアプリケーションは、Web サイトで期待されるのと同じユーザー名とパスワードを呼び出してPOST します。その後、API は、アプリが保存して将来の認証に使用するトークンを返します。トークンは危険なライブラリを使用して生成されます。具体的には、 を使用して作成されTimedJSONWebSignatureSerializerます。

現在、Web サイトのページの 1 つが API にアクセスする必要があるという混乱した問題が発生しています。もちろん、ユーザーは適切に生成された認証トークンを持っていないため、API はアクセスを許可しません。コードのすべての部分を制御できますが、この場合の最も洗練されたソリューションが何であるかはわかりません。いずれかの認証メカニズムの使用を停止する必要がありますか? Web サイト ユーザーの API 認証トークンを何らかの方法で保存する必要がありますか?

アドバイスをいただければ幸いです。

更新 この問題について考えていると、login_user が使用するトークン生成プロセスを変更できることがわかりました。login_user が API と同じトークンを使用した場合、おそらく、ユーザーが Web サイト経由で API リクエストを行う必要があるときはいつでも、セッションからトークンを取得できます。これが正気かどうかはまだはっきりしていません。

4

1 に答える 1

0

私が最終的に行った方法は、両方のアプローチを組み合わせることでした。user_logged_inユーザーがログインするたびに起動します。このメソッドを使用して api-token を生成し、ログイン時にユーザー オブジェクトに格納しました。次に、ユーザーが API 呼び出しを行う場合、ユーザー オブジェクトからトークンを取得するだけです。

これがベストプラクティスかどうかはわかりませんが、うまく機能しているようです。

于 2015-02-26T18:47:22.947 に答える