2016-11-08 4 views
0

私は、許可されたアプリケーションを使用して、さまざまなデータセットのメタデータを更新するスクリプトを作成しようとしています。 OAuthを使用することは間違ったアプローチ(他のユーザーが自分自身として使用するためのWeb対応のアプリケーションではない)のように思えます。自分のユーザー名とパスワードを渡すのは... ickyです。アプリケーショントークンとHTTPベーシックプライベートを使用してSocrataデータセットを更新してください

SODA API authentication documentationはかなり混乱して:

すべてのHTTP-基本認証の要求は、セキュア(HTTPS)接続を介して行われなければならない、とあなたはあなたのアプリケーションを登録するときに得られるアプリケーショントークンを含める必要があります。しかし、要求が認証された場合、認証([アプリケーション]?)トークンは厳密には要求されません。安全でない接続で行われた認証済みの要求は拒否されます。だから、

POST /resource/4tka-6guv.json HTTP/1.1 
Host: soda.demo.socrata.com 
Accept: */* 
Authorization: Basic [REDACTED] 
Content-Length: 253 
Content-Type: application/json 
X-App-Token: [REDACTED] 

:ここ

は、HTTP基本認証を使用するサンプルのHTTPセッションで

  1. は、あなたも、基本的なHTTPで認証するアプリトークン+シークレットトークンを使用することはできますか?
  2. "[REDACTED]"の2つのうち、どちらがアプリトークンであり、どちらがシークレットトークンですか? (いくつかのテストに基づいて)

私の推測では答えがあるとされています

  1. 最初の「[編集さ]は、」ユーザ名+パスワードをBase64バージョンで、もう一つはありますアプリケーショントークンは、認証には関係ありません。

答えて

0

アプリケーショントークンと秘密トークンは、プリベークされたユーザー認証には実際には関連付けられていません。彼らはあなたのアプリケーションに縛られていて、OAuthで使用されて、ユーザーがOAuthワークフローを通過したときのあなたのアプリの存在を保証します。ユーザーが認証すると、アプリケーションは実際に要求を認証するために使用される認証トークンを取得できます。

あなたが実際に探しているのは、「ベアラトークン」を取得する方法です。このベアラトークンは、いくつかのAPIプロバイダが生成できるようにしています。これにより、基本的に "pre-OAuth"になり、完全なワークフローを通過することなく認証トークンを取得することができます。残念ながら、私たちはまだ(まだ)それらの1つではありませんので、単純な古いHTTP Basicとユーザ名とパスワードで認証する必要があります。

これをやや難しい方法で行うには、必要なデータセットに必要な権限のみを付与する「ボット」アカウントを登録することをお勧めします。少なくとも、あなたの設定にあなたの普通のユーザーの資格情報を焼き付けているわけではありません。しかし、もし我々がベアラトークンを持っていたとしても、それらをあなたのどこかに置くことを覚えておいてください。

あなたのより具体的な質問に答えるために:その後、そのうちの一つは、彼らがされていない、ベアラトークンでなければならないので

  1. ありませんが、。
  2. AuthorizationヘッダーはBase32でコード化されたusername:passwordですが、X-App-Tokenはアプリケーショントークンです。この場合、後者は、そのリクエストがあなたのアプリから来たものであることを特定する余分なヘッダーに過ぎません。

ドキュメントのご意見ありがとうございます。私はそれらをきれいにしてより簡単にしようとしていますが、私は間違いなくそのタイプミスを修正します。

関連する問題