OAuth 2.0 Authorizationヘッダー


91

OAuth 2.0の機能をカプセル化したSDKを開発したい。OAuth 1.0と2.0の違いを確認しましたが、Authorizationヘッダー(1.02.0)に混乱があります。OAuth1.0プロトコルパラメーターはHTTPの「Authorization」ヘッダーを使用して送信できますが、これは現在のところ説明されていませんOAuth 2.0ドラフト。

OAuth 2.0は認証ヘッダーをサポートしていますか?

OAuth 1.0では、ヘッダーは次のようになります。

Authorization: OAuth realm="Example",
    oauth_consumer_key="0685bd9184jfhq22",
    oauth_token="ad180jjd733klru7",
    oauth_signature_method="HMAC-SHA1",
    oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
    oauth_timestamp="137131200",
    oauth_nonce="4572616e48616d6d65724c61686176",
    oauth_version="1.0"

あなたの質問に答えていませんが、すでに多くのOpenIdおよびOAuthライブラリが存在します。ホイールを再発明してもよろしいですか?
ケーン

こんにちはKane、私はOAuth用のSDKを開発していません。SDKにOAuth関数が必要なだけなので、サードパートライブラリを導入したくありません。
JKhuang

回答:


205

ヘッダーでOAuth2承認(アクセストークン)を渡す方法の例を探している方のために(リクエストまたは本文パラメーターを使用するのではなく)、以下にその方法を示します。

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

32
cURLで認証ヘッダーを使用しようとしているこのスレッドに出くわした人のために、ここにコマンドがあります: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G

5
簡単な質問、私はこのような回答を繰り返し見ていますが、説明はありません。これをコードで(HTTPRequest APIを介して)実行している場合は、ヘッダー名と関連するデータフィールドを使用して、ヘッダーをリクエストに追加します。この回答では、どの部分がヘッダーの名前であり、どのデータですか?すなわち、ヘッダがあるAuthorization: Bearer0b...42、データとして、またはヘッダがあるAuthorization:Bearer 0b...42、データ、またはどのように?ありがとう!(それが重要であれば、私はOauth2です。)
Olie

9
AuthorizationRFC2616のセクション4.2に従って、ヘッダー名であり、コロンはすべてのヘッダーの値から名前を区切ります。
リックマックギリス

35

OAuth 2.0でもAuthorizationヘッダーを使用できます。OAuthベアラートークンで使用するためにAuthorizationヘッダーで指定されたベアラータイプがあります(つまり、クライアントアプリは単にトークンを提示(「ベア」)する必要があります)。ヘッダーの値は、クライアントが承認サーバーから受信したアクセストークンです。

この仕様に記載されていますhttps : //tools.ietf.org/html/rfc6750#section-2.1

例えば:

   GET /resource HTTP/1.1
   Host: server.example.com
   Authorization: Bearer mF_9.B5f-4.1JqM

ここで、mF_9.B5f-4.1JqMはOAuthアクセストークンです。


OAuth 2.0のドキュメントの例として、2つのアクセストークンのタイプ:ベアラとMAC(tools.ietf.org/html/rfc6749#section-7.1
Clauds

1
残念ながらMACは完全に標準化されておらず(期限切れのドラフト仕様:tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05を参照)、実際には使用されていません。
スコットT.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.