web-dev-qa-db-ja.com

OpenIDのみを使用している場合、401のWWW-Authenticateヘッダーに何を渡す必要がありますか?

HTTP仕様には次のように記載されています。

10.4.2 401 Unauthorized

リクエストにはユーザー認証が必要です。応答には、要求されたリソースに適用可能なチャレンジを含むWWW-Authenticateヘッダーフィールド(セクション14.47)を含める必要があります。

サポートしているログインスキームがOpenID(またはCAS、またはOAuthトークンなど)のみ)の場合、このフィールドに何を入力する必要がありますか?つまり、クライアントが次のことを行う必要があることをどのように示しますか? pre-authenticateそして、各リクエストと一緒に資格情報を送信しようとするのではなく、セッションを作成しますか?

「401を送信しないでください。OpenIDログインページにリダイレクトする3xxを送信してください」と答える前に、HTML以外のクライアントについてはどうでしょうか。たとえば、Stack Overflowは、カスタムソフトウェアが相互作用できるAPIをどのように実行しますか?

34
James A. Rosen

RFC2617 によると、auth-schemeは何でもかまいません。あなたが本当に401が欲しいのなら、あなたはそうではありません技術的にWWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location"のようなものを作ることによって仕様を破ります。そうは言っても、それを実行したときの他の人のコードの動作はもちろん定義されていません。 :-)

26
Chris Boyle

OAuth Discovery spec があります。これは、WWW-Authenticateヘッダーに何を入れるかを示します-仕様がまだ置き換え仕様なしで廃止されていない場合。

3
Andrew Arnott