2016-05-26 24 views
1

私は、RESTfulなAPIとインターフェイスするpythonを使ってコマンドラインツールを構築しています。 APIは認証にoauth2を使用します。ユーザーがpythonツールを実行するたびにaccess_tokenを要求するのではなく、 access_tokenを何らかの方法で格納して、その寿命まで使用できるかどうかそれがどれほど安全なのか。認証トークンを別のファイルに保存することはできますか?

答えて

1

アクセストークンは、ユーザーのデスクトップ上のファイルに保存できます。

ストレージを使用することができます。あなたがoauth2clientを使用すると仮定すると:これらのアクセストークンは、ユーザーのデスクトップ上になるように、セキュリティの面では

# Reading credentials 
store = oauth2client.file.Storage(cred_path) 
credentials = store.get() 

# Writing credentials 
creds = client.AccessTokenCredentials(access_token, user_agent) 
creds.access_token = access_token 
creds.refresh_token = refresh_token 
creds.client_id = client_id 
creds.client_secret = client_secret 

# For some reason it does not save all the credentials, 
# so write them to a json file manually instead 
with open(credential_path, "w") as f: 
    f.write(creds.to_json) 

が、私はここに脅威の多くは表示されません。誰かがアクセストークンを取得したい場合、その時間枠の間、そのファイルへの読み取りアクセス権が必要になります。ただし、既に実行できる場合は、認証されるたびにスクリプトを使用してユーザーのアクセストークンのコピーを送信する可能性が高くなります。しかし、私はその分野の専門家ではないので、私の言葉を軽く借りてください。 information security stack exchangeを参照してください。

情報セキュリティスタック交換でpostはこれについて話しました:

これらのトークンは、ユーザーに関するいくつかのかなりの特権情報へのアクセスを与えます。

しかし、質問はデータベースに代わりました。

結論として、ファイルに保管してください。 (しかし、塩の穀物で私の言葉をとりなさい)

1

あなたはサービス側に、またはローカルに保管しますか?

貴方のツールは、ステートレスのRESTful APIにインターフェイスするため、APIへのさまざまなリクエスト間に情報が格納されないため、実際にクライアントがRESTエンドポイントのいずれかにアクセスするたびにアクセストークンを提供する必要があります。おそらくあなたの設計の詳細のいくつかが失われているかもしれませんが、トークンを持っているユーザーはすでに認証されているので、アクセストークンは承認のためだけに使用するべきです。このため、トークンは一定時間、通常は1時間有効です。

したがって、Cookie(Webインターフェイス)を使用するか、トークンをローカルに格納するか(どちらが意味しているか)のいずれかの状態を提供する必要があります。ただし、ユーザーがクライアントにログインするたび(ユーザーの認証と新しい認証トークンの提供)にoauthフロー全体を起動する必要があります。そうしないと、oauthのメリットは活用されません。

関連する問題