web-dev-qa-db-ja.com

Authorization HTTPヘッダーをカスタマイズする

クライアントがAPIにリクエストを送信するときに、クライアントを認証する必要があります。クライアントにはAPIトークンがあり、標準のAuthorizationヘッダーを使用してトークンをサーバーに送信することを考えていました。

通常、このヘッダーはBasicおよびDigest認証に使用されます。しかし、このヘッダーの値をカスタマイズしてカスタムの認証スキームを使用できるかどうかはわかりません、例えば:

Authorization: Token 1af538baa9045a84c0e889f672baf83ff24

これをお勧めしますか?または、トークンを送信するためのより良いアプローチがありますか?

78
Thomas Watson

Authorization:ヘッダーを使用する独自のカスタム認証スキーマを作成できます。たとえば、これが OAuth の仕組みです。

一般的なルールとして、サーバーまたはプロキシが標準ヘッダーのvaluesを理解しない場合、それらはそのままにして無視されます。独自のヘッダーkeysを作成していますが、多くの場合、予期しない結果が生じる可能性があります。多くのプロキシは、認識できない名前のヘッダーを削除します。

とは言っても、CookieがAuthorization:ヘッダーではなくCookieを使用してトークンを送信することは、Cookieがカスタム値を運ぶように明示的に設計されているのに対し、HTTPの組み込み認証の仕様メソッドは実際にはどちらの方法でも言いません-あなたがそれが言うことを正確に見たいなら、 ここを見てください

これに関する他のポイントは、多くのHTTPクライアントライブラリがダイジェストと基本認証の組み込みサポートを持っているが、ヘッダーフィールドに生の値を設定しようとすると生活が難しくなる可能性があることです多少の値を許可します。

49
DaveRandom

CROSS Originリクエストの場合、これを読んでください:

私はこの状況に直面し、最初にAuthorizationヘッダーを使用することを選択し、次の問題に直面した後で削除しました。

Authorizationヘッダーはカスタムヘッダーと見なされます。そのため、Autorizationヘッダーセットを使用してクロスドメインリクエストが行われた場合、ブラウザは最初にプリフライトリクエストを送信します。プリフライトリクエストは、OPTIONSメソッドによるHTTPリクエストです。このリクエストは、リクエストからすべてのパラメータを取り除きます。サーバーは、カスタムヘッダーの値を持つAccess-Control-Allow-Headersヘッダー(Authorizationヘッダー)で応答する必要があります。

そのため、クライアント(ブラウザ)が送信するリクエストごとに、追加のHTTPリクエスト(OPTIONS)がブラウザから送信されていました。これにより、APIのパフォーマンスが低下しました。これを追加するとパフォーマンスが低下するかどうかを確認する必要があります。回避策として、httpパラメーターでトークンを送信しています。これは最善の方法ではありませんが、パフォーマンスに妥協することはできません。

8
Abhishek Kumar

これは少し古いですが、他の人が同じ質問の答えを探しているかもしれません。 APIにとってどの保護スペースが意味をなすかについて考える必要があります。たとえば、APIへのクライアントアプリケーションアクセスを識別および認証して、既知の登録済みクライアントアプリケーションへの使用を制限することができます。この場合、ユーザーIDとしてクライアント識別子を、パスワードとしてクライアント共有シークレットを使用して、Basic認証スキームを使用できます。独自の認証スキームは、各保護スペースに対してクライアントが使用するスキームを明確に識別する必要はありません。保護スペースごとに1つだけを好みますが、HTTP標準では、各WWW-Authenticateヘッダー応答での複数の認証スキームと、各応答での複数のWWW-Authenticateヘッダーの両方を許可しています。これは、APIクライアントが使用するオプションを混乱させるでしょう。一貫性と明確性を保つと、APIが使用されます。

5
Steve Dearborn

カスタムスキーム名でHTTP認証を使用しないことをお勧めします。ただし、一般的な用途があると思う場合は、canで新しいスキームを定義できます。詳細については、 http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-latest.html#rfc.section.2. を参照してください。

2
Julian Reschke

郵便配達員に以下を試してください:-

ヘッダーセクションの例で私のために働く..

認証:JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyIkX18iOnsic3RyaWN0TW9kZSI6dHJ1ZSwiZ2V0dGVycyI6e30sIndhc1BvcHVsYXRlZCI6ZmFsc2UsImFjdGl2ZVBhdGhzIjp7InBhdGhzIjp7InBhc3N3b3JkIjoiaW5pdCIsImVtYWlsIjoiaW5pdCIsIl9fdiI6ImluaXQiLCJfaWQiOiJpbml0In0sInN0YXRlcyI6eyJpZ25vcmUiOnt9LCJkZWZhdWx0Ijp7fSwiaW5pdCI6eyJfX3YiOnRydWUsInBhc3N3b3JkIjp0cnVlLCJlbWFpbCI6dHJ1ZSwiX2lkIjp0cnVlfSwibW9kaWZ5Ijp7fSwicmVxdWlyZSI6e319LCJzdGF0ZU5hbWVzIjpbInJlcXVpcmUiLCJtb2RpZnkiLCJpbml0IiwiZGVmYXVsdCIsImlnbm9yZSJdfSwiZW1pdHRlciI6eyJkb21haW4iOm51bGwsIl9ldmVudHMiOnt9LCJfZXZ​​lbnRzQ291bnQiOjAsIl9tYXhMaXN0ZW5lcnMiOjB9fSwiaXNOZXciOmZhbHNlLCJfZG9jIjp7Il9fdiI6MCwicGFzc3dvcmQiOiIkMmEkMTAkdTAybWNnWHFjWVQvdE41MlkzZ2l3dVROd3ZMWW9ZTlFXejlUcThyaDIwR09IMlhHY3haZWUiLCJlbWFpbCI6Im1hZGFuLmRhbGUxQGdtYWlsLmNvbSIsIl9pZCI6IjU5MjEzYzYyYWM2ODZlMGMyNzI2MjgzMiJ9LCJfcHJlcyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbbnVsbCxudWxsLG51bGxdLCIkX19vcmlnaW5hbF92YWxpZGF0ZSI6W251bGxdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltudWxsXX0sIl9wb3N0cyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbXSw iJF9fb3JpZ2luYWxfdmFsaWRhdGUiOltdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltdfSwiaWF0IjoxNDk1MzUwNzA5LCJleHAiOjE0OTUzNjA3ODl9.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU

0
Madan Dale