/
454.txt
185 lines (140 loc) · 9.86 KB
/
454.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
[13] [DFN[[[WSSE]]]] は [[HTTP]] の[[認証]]の仕組みの一種です。
2000年代の中頃、いわゆる [[Web 2.0]] 時代に、
[[Web API]] の[[認証方式]]として広く用いられました。その後の [[OAuth]]
の[[標準化]]と普及により、 [[WSSE]] は使われなくなりました。
* 代替
[32] [[OAuth]] の普及により、 [[WSSE]] が新たに使われることはなくなりました。
既存の [[Web API]] も徐々に廃止されています。
[33] [[WSSE]] でのみ提供される [[Web API]] もほとんど残っていないと思われるので、
[[クライアントライブラリー]]も [[WSSE]] に対応する必要は無さそうです。
* プロトコル
[12] [[WSSE]] の解説の多くは仕様あるいは詳細として [[WS-Security]] 関連の仕様や解説記事を参照しているが、
[[HTTP]] の認証としての [[WSSE]] を本当に説明しているものは少ない。 [[WSSE]] は歴史的に [[WS-Security]]
の認証方式を流用して [[Web API]] に適用したものであるが、実態として [[WS-*]] / [[SOAP]]
とは関係ない。
;; [28] 当時は [[XML]] が [[Web]] の進化の方向性として信じられていたため、
[[XML]] を使ったシステム体系である [[WS-*]] との整合性が重視されていました。
(整合性といっても「似ている」程度のものですが...)
[[Webアプリケーション]]の[[バックエンド]]として [[WS-*]]
を使っている時に、 [[WS-*]] と整合した [[WSSE]] を使うと一貫したセキュリティーが実現できる、
とでも思われていたのでしょうが、現実にはほとんどの [[Webアプリケーション]]は
[[WS-*]] など使う予定すらありませんでしたし、仮にそのような事例が存在したとしても、
[[HTTP認証]]と [[WS-*]] のセキュリティー機能が連動していたか (それによる利点があったか)
は甚だ疑問であります。
[REFS[
- [14] [CITE@en[Rewriting Microsoft web services '''['''dive into mark''']''']] ([TIME[2013-07-18 06:44:04 +09:00]] 版) <http://web.archive.org/web/20110411003501/http://diveintomark.org/archives/2003/09/08/msweb-rest>
-[8] [CITE[XML.com]]
( ([[Mark Pilgrim]] 著, [TIME[2013-07-18 05:53:18 +09:00]] 版))
<http://www.xml.com/pub/a/2003/12/17/dive.html>
-[9] [CITE[TypePad Atom API]]
( ([TIME[2013-07-18 05:57:35 +09:00]] 版))
<http://web.archive.org/web/20050810011757/http://www.sixapart.com/pronet/docs/typepad_atom_api>
]REFS]
[10] おそらく >>8 が唯一[[仕様]]と呼べるレベルのもので、 >>9 がおそらく最初の実装リファレンス。
>>9 や >>14 の方が少し緩い。
[REFS[
-[3] [CITE[Atom APIのWSSE認証について - こせきの技術日記 - 技術日記]]
( ([TIME[2013-07-18 05:12:13 +09:00]] 版))
<http://tech.g.hatena.ne.jp/koseki/20050520/AtomWSSE>
- [1] [CITE[Windows Live Writer の WSSE 認証 - 大西日記 - はてなダイアリー]] ([TIME[2009-03-31 09:29:58 +09:00]] 版) <http://d.hatena.ne.jp/onishi/20080831/1220159168>
]REFS]
[11] >>3 によれば >>8、>>9 の digest の計算方法は後に誤りと考えられるようになったが、
>>1 にあるように、未だに両方の実装が存在している。
[REFS[
- [15] [CITE[DifferentlyAbledClients - Atom Wiki]] ([TIME[2012-02-14 22:15:19 +09:00]] 版) <http://www.intertwingly.net/wiki/pie/DifferentlyAbledClients>
]REFS]
[16] [[Atom]] とセットで使われてきたけど [[IETF]] の [[AtomPub]] は既存の [[HTTP]] の認証を使えばいいということになっている。
;; [29] 結果、現実に存在するプロトコルであるにも関わらず [[WSSE]]
を明確に規定した[[仕様書]]は存在しませんでしたし、 >>11
のような問題が生じても何が正しいかを確定する音頭を取れる人(団体)もいませんでした。
* セキュリティー
[19] [[WSSE]] では[[利用者名]]と[[合言葉]]の組を使いますが、
[[クライアント]]も[[鯖]]も、この組を[[平文]] (に[[復号]]可能な形)
で保持しておく必要があります。
[20] 一般に[[利用者]]が指定した生の[[パスワード]]を[[サーバー]]で保存するのは悪手と考えられています。
[[利用者]]が指定した生の[[パスワード]]を保持することを防ぐため、
[[一方向ハッシュ関数]]を適用した結果や、
[[鯖]]側で生成した[[合言葉]]とは関係のない[[トークン]]を[[合言葉]]として使う実装もあります。
* HTTP 認証との関係
[35]
[[challenge]] は [[HTTP認証]]の仕組みに則っていますが、
[[HTTP要求]]は独自の [[HTTPヘッダー]]だけを使っており、
[[HTTP認証]]の仕組みから外れています。
[36]
そのため [[HTTPキャッシュ]]との関係を考慮し[[HTTP要求]]と [[HTTP応答]]に適切な
[CODE(HTTP)@en[Cache-Control:]] [[ヘッダー]]や [CODE(HTTP)@en[Vary:]]
[[ヘッダー]]を指定する必要があります。
;; [37] そうしなければ意図せず[[共有キャッシュ]]に[[蓄積]]されて[[再利用]]されてしまうかもしれません。
[[クライアント]]は[[サーバー]]が内部で[[キャッシュサーバー]]を使っているかわかりませんし、
[[サーバー]]は[[クライアント]]が[[プロキシ]]を使っているかわかりませんから、
どちらも適切な指定を加えなければなりません。
[26] どうやら [[credentials]] を [CODE(HTTP)@en[[[Authorization:]]]]
ではなく独自の[[ヘッダー]]で送っているのは、 [[CGI]] が [CODE(HTTP)@en[[[Authorization:]]]]
[[ヘッダー]]を [[CGIスクリプト]]に提供していなかったため [SRC[>>25]] のようです。
[REFS[
- [25] [CITE[New AtomAPI Implementation Release | BitWorking | Joe Gregorio]] ([TIME[2015-02-21 01:29:03 +09:00]] 版) <http://web.archive.org/web/20101213023745/http://bitworking.org/news/New_AtomAPI_Implementation_Release2>
]REFS]
* メモ
[2] [CITE[LWP::Authen::Wsse を使うとき,なぜ use LWP::Authen::Wsse しなくて良いのか - 理系学生日記]]
([TIME[2010-12-06 17:15:35 +09:00]] 版)
<http://d.hatena.ne.jp/kiririmode/20081004/p1>
[5] [CITE@en[各サービスにおいてWSSE認証を厳密に確認するようになりました - Hatena Developer Blog]]
( ([TIME[2013-07-18 05:18:02 +09:00]] 版))
<http://developer.hatenastaff.com/entry/20110121/1295588374>
[6] [CITE[はてなサービスにおけるWSSE認証 - Hatena Developer Center]]
( ([TIME[2013-07-18 05:18:19 +09:00]] 版))
<http://developer.hatena.ne.jp/ja/documents/auth/apis/wsse>
[4] [CITE[Section 11.1. Data Feeds]] ([TIME[2007-06-25 13:34:05 +09:00]] 版) <http://82.157.70.109/mirrorbooks/buildingwebsites/0596102356/web2apps-CHP-11-SECT-1.html>
[PRE(HTTP code)[
Authorization: WSSE profile="cal"
X-WSSE: UsernameToken Username="cal",
Created="2005-11-14T18:40:04-0800",
Nonce="bf59559401b2d9e14964823a37836a76",
PasswordDigest="WgUU6xmxOsGYqhNun9gJZ//C9ew="
]PRE]
[7]
[PRE(HTTP code)[
Authorization: WSSE profile="cal"
]PRE]
<http://books.google.co.jp/books?id=Cd32Nk6TSoUC&pg=PA283&lpg=PA283&dq=%22authorization:+wsse%22&source=bl&ots=IyXc_uvgzW&sig=4hq1wDbUyyNJgqvSETzJwi1Rv-U&hl=ja&sa=X&ei=7HvnUbLFF8eGkgXxrIAo&ved=0CEQQ6AEwAzhG#v=onepage&q=%22authorization%3A%20wsse%22&f=false>
[17] [CITE@en[はてな各種APIでのパスワードによるWSSE認証を終了しました(開発者向け) - Hatena Developer Blog]]
([TIME[2015-02-21 01:10:49 +09:00]] 版)
<http://developer.hatenastaff.com/entry/2014/03/05/185138>
[18] [CITE@ja[WSSEとHTTPダイジェスト認証 | Livingdeadの日記 | スラッシュドット・ジャパン]]
([TIME[2015-02-21 01:12:07 +09:00]] 版)
<http://slashdot.jp/~Livingdead/journal/488927/>
[21] [CITE@ja[2.5.個人認証について|アメばた会議API]]
([TIME[2015-02-21 01:18:23 +09:00]] 版)
<http://ameblo.jp/amebabbs-api/entry-10097322688.html>
[22] [CITE@ja[WSSE認証とパスワードに関する疑問 - F.Ko-Jiの「一秒後は未来」]]
([TIME[2015-02-21 01:19:41 +09:00]] 版)
<http://blog.fkoji.com/2009/01261051.html>
[23] [CITE@ja[【続報】mixi Connect WSSE認証の終了について << mixi Developer Center (ミクシィ デベロッパーセンター)]]
([TIME[2015-01-21 14:05:14 +09:00]] 版)
<http://developer.mixi.co.jp/news/news_connect/011558.html>
[FIG(quote)[
[FIGCAPTION[
[24] [CITE@ja[AtomPub API について - livedoor Blog ヘルプセンター]]
([TIME[2015-02-21 01:22:24 +09:00]] 版)
<http://help.blogpark.jp/archives/52372407.html>
]FIGCAPTION]
> WSSE 認証は Atom Authentication で言及されている認証方法です。
> ユーザ名: ライブドアID
> パスワード: ブログ設定に表示されている、AtomPub用パスワード (ライブドアIDのパスワードではありません)
]FIG]
[27] [CITE@ja[mixi Connect WSSE認証の終了について << mixi Developer Center (ミクシィ デベロッパーセンター)]]
([TIME[2015-06-04 11:01:29 +09:00]] 版)
<http://developer.mixi.co.jp/news/news_connect/011125.html>
[FIG(quote)[
[FIGCAPTION[
[30] [CITE@en[WSSE Authentication | Adobe Developer Connection]]
( ([TIME[2016-05-16 15:10:00 +09:00]]))
<https://marketing.adobe.com/developer/ja/documentation/authentication-1/wsse-authentication-2>
]FIGCAPTION]
> While Adobe will support WSSE Authentication for some time, we encourage the use of OAuth Authentication for the longer term.
]FIG]
[31] >>30 でも冒頭で [[SOAP]] 云々と言っていますが、以後まったく [[SOAP]]
と関係ない説明が続いていますw
[34] [CITE@en[WSSE Authentication | Adobe Developer Connection]]
( ([TIME[2017-03-04 12:16:23 +09:00]]))
<https://marketing.adobe.com/developer/ja/documentation/authentication-1/wsse-authentication-2>