HTTP仕様には次のように記載されています。
10.4.2 401 Unauthorized
リクエストにはユーザー認証が必要です。応答には、要求されたリソースに適用可能なチャレンジを含むWWW-Authenticateヘッダーフィールド(セクション14.47)を含める必要があります。
サポートしているログインスキームがOpenID(またはCAS、またはOAuthトークンなど)のみ)の場合、このフィールドに何を入力する必要がありますか?つまり、クライアントが次のことを行う必要があることをどのように示しますか? pre-authenticateそして、各リクエストと一緒に資格情報を送信しようとするのではなく、セッションを作成しますか?
「401を送信しないでください。OpenIDログインページにリダイレクトする3xxを送信してください」と答える前に、HTML以外のクライアントについてはどうでしょうか。たとえば、Stack Overflowは、カスタムソフトウェアが相互作用できるAPIをどのように実行しますか?
RFC2617 によると、auth-scheme
は何でもかまいません。あなたが本当に401が欲しいのなら、あなたはそうではありません技術的にWWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location"
のようなものを作ることによって仕様を破ります。そうは言っても、それを実行したときの他の人のコードの動作はもちろん定義されていません。 :-)
OAuth Discovery spec があります。これは、WWW-Authenticateヘッダーに何を入れるかを示します-仕様がまだ置き換え仕様なしで廃止されていない場合。