7

私は Oauth Api の実装に取り​​組んでおり、検証に問題があることがいくつかあることを発見しています。誰かが説明を提供できれば幸いです。警告私はおそらくとりとめのないので、質問を太字でマークしようとします.

oauth 1.0 仕様https://www.rfc-editor.org/rfc/rfc5849によると、oauth パラメーターが署名用にパーセントでエンコードされる方法は、通信中とは異なると思われます。セクション 3.6 https://www.rfc-editor.org/rfc/rfc5849#section-3.6 「署名ベース文字列と「承認」ヘッダー フィールドの構築でのみ使用されます。」

RFC3986 https://www.rfc-editor.org/rfc/rfc3986 これは、通常のリクエストで使用されるパーセント エンコーディング スキームのようです。ただし、「this」が「that」にマップされるようなものは見られなかったので、文字が予約済みリストにある場合は、16 進数の同等のものを使用する必要があると想定しています。

' '(スペース) が署名用にエンコードされたときに %20 であるという唯一の違いはありますか? Oauth仕様はこれを参照していますが、他の仕様でそれが定義されている場所を正直に見つけることができません. それが言及されている場所と、私がそれをどのように誤解したかを誰かが指摘してくれたら素晴らしいでしょう.

他の空白文字は %20 にする必要がありますか? 仕様のどこにそれが言及されていますか?

従来の UrlEncode は、フォームのボディとクエリのパラメーターに適していますか?

最後に、検証しようとしている出力例をいくつか示します。Oauth 署名でエンコードされた文字と Url でエンコードされた文字の違いを示してみました。ここでも、' '、'*' および '~' の処理のみが異なるようです。

Char  Oauth  Url
*     %2A     *
~     ~     %7E
%     %25     %25
!     %21     %21
:     %3A     %3A
/     %2F     %2F
=     %3D     %3D
&     %26     %26
+     %2B     %2B
      %20     +
,     %2C     %2C
@     %40     %40
\r\n  %0D%0A  %0D%0A
\n    %0A     %0A
\r    %0D     %0D
"     %22     %22
?     %3F     %3F
(     %28     %28
)     %29     %29
|     %7C     %7C
[     %5B     %5B
]     %5D     %5D
4

3 に答える 3

1

これは古い投稿ですが、私の理解をすべて同じに述べたいと思います。

rfc3986#2.1で指定されているパーセント エンコーディングに関しては、予約されていない文字以外のすべての文字がエスケープされることが理解されています。

これは、以下以外を意味します。

  unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

残りの文字はエンコードされます。

ここでは、Java での実装例を示します。String を引数として受け入れる percentEncode メソッドを探します。

public static String percentEncode(String s)

他の言語での追加のコード サンプルは、ここにあります。

于 2015-04-05T18:26:24.810 に答える
-1

おそらく、Twitter 開発者向けドキュメントのこの部分が役立つかもしれません: https://developer.twitter.com/en/docs/basics/authentication/guides/percent-encoding-parameters.html

于 2013-05-02T13:12:05.327 に答える